LINQ:在列表中查找包含项目列表的项目

时间:2014-01-22 21:38:39

标签: linq list find windows-store-apps

人!

我有一个小问题 LINQ (在本主题中我是完全开始的)。也许这是一些设计错误,但让你决定它。 我正在编写 Windows应用商店应用,这是一种日历。它有一个 Day 对象。由于语义缩放(以及一些喋喋不休的黑客攻击),我将这一天放入一个包装类中,命名为 Month

加载所有数据后,在获取当前数据后,我想从此结构中提取当前的Day对象。 这是重要的代码:

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

后来我有了这个:

List<Month> Months;

它正确地填充了天数列表。现在是棘手的部分:

Day Today = Months.Find( ??? )

我有一些想法,但没有一个是满意的......

所以,问题是:

如何从LINQ中的多列表层次结构中选择项目?

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

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分: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 */);