2014-01-22 3 views
0

남자!LINQ : 항목 목록이 포함 된 목록에서 항목 찾기

작은 문제가 있습니다. LINQ (이 항목에서는 전체 초보자 용). 어쩌면 싫어하는 실수 일지 모르지만 결정하게하십시오. 나는 부드러운 달력 인 Windows Store App을 코딩하고 있습니다. 그것은 개체가 있습니다. 시맨틱 줌 (그리고 약간의 그루핑 해킹)으로 인해, 나는이 날을 이라는 래퍼 클래스에 넣었다.

모든 데이터를로드하고 현재 데이터를 가져온 후이 구조체에서 현재 Day 개체를 추출합니다.

List<Month> Months; 

그것은 제대로 일의 목록으로 가득 :

public class Day 
{ 
    public int nr { get; set; } 
    ... 
} 
public class Month 
{ 
    public string Title {get;set;} 
    public List<Day> Days{get;set;} 
} 

나중에 나는이있다 : 다음은 중요한 코드입니다.

Day Today = Months.Find(???) 
좀 생각을했다

,하지만 그들 중 누구도 statisfying되지 않았다 ...

그래서, 질문은 : 나는에서 항목을 선택할 수있는 방법

이제 까다로운 부분은 온다 LINQ의 다중 목록 계층 구조?

(List<List<Day>>, and one condition must met in each list (Day.nr and Month.nr)) 

답변

1

매달에 대한 열거 만들기 : 이제

public enum NamesOfMonths 
{ 
    January = 1, 
    February = 2, 
    // so on and so forth 
} 

, 올바른 월 발견하는 데 사용할 수 있습니다, 그리고 결국 정확한 날.

var dayToday = DateTime.Now.Day; 
var monthToday = DateTime.Now.Month; 

Day Today = Months.Find(m => m.Title.Equals(((NamesOfMonths)monthToday).ToString())) 
    .Days.Where(d => d.Nr == dayToday).FirstOrDefault(); 
+0

감사합니다. 맞습니다! –

0

나는 당신이 SelectMany 찾고있는 생각 :

var days = months.SelectMany(m => m.Days); // Gets all the days in those months 
var today = days.Where(d => /* some condition goes here */); 
+0

정확하게는 아닙니다. 나는 하루 만 찾고 있습니다. 그리고 그 날의 nr은 보편적 인 id가 아니기 때문에 매달 1 일, 2 일 등의 날이 있습니다. 그러나 첫 번째 행에서 한 달만 선택하는 방법을 지정할 수 있다면 내 문제를 해결할 수 있습니다. :) –

+0

또한 'var today'의 형식은 실제로 IEnum입니다. –

관련 문제