人!
我有一个小问题 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))
答案 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 */);