我需要尽可能多地使用linq,而且我不知道如何在这种类型的方法中使用linq。
我已经尝试了某些网站上的一些代码,但是它们都不起作用
List<MemorableD> memorables = new List<MemorableD>();
List<StateMD> states = new List<StateMD>();
void Find(List<MemorableD> selected)
{
for (int i = 0; i < states.Count; i++)
{
for (int j = 0; j < memorables.Count; j++)
{
if (states[i].Month == memorables[j].Month && states[i].Day == memorables[j].Day)
{
MemorableD select = new MemorableD(memorables[j].Year, memorables[j].Month, memorables[j].Day, memorables[j].Event, states[i].Event);
selected.Add(select);
}
}
}
}
我需要用LINQ编写这种添加方法
答案 0 :(得分:1)
尝试解决您的问题。如果要分析循环,则要遍历State和Memorables,并创建MemorableD实例,其中State和Memorable具有相同的Month和Day,然后将它们添加到列表中。
将其翻译为Linq,
from StateMD state in states
from MemorableD memorable in memorables
where state.Month == memorable.Month && state.Day == memorable.Day
let selectValue = new MemorableD(memorable.Year, memorable.Month, memorable.Day, memorable.Event, state.Event)
select selectValue
问题的第二部分是将其添加到名为selected的列表中。您可以使用AddRange方法将IEnumerable添加到所选内容。
因此,将Linq语句与AddRange方法结合起来,
selected.AddRange(from StateMD state in states
from MemorableD memorable in memorables
where state.Month == memorable.Month && state.Day == memorable.Day
let selectValue = new MemorableD(memorable.Year, memorable.Month, memorable.Day, memorable.Event, state.Event)
select selectValue);