簡體   English   中英

從一個LINQ查詢添加到兩個不同的列表

[英]Adding to two different lists from one LINQ query

我有兩個列表(分別稱為foo和bar),我想最小化LINQ查詢的數量(好的,我知道它們的開銷很小,但是兩個查詢要花兩倍的時間,而使用iOS開發LINQ可能會出現問題) 。 該查詢將完全相同,但我想將結果添加到兩個列表中。

我當前的代碼如下所示

List<foo> foos = new List<foos>();
List<bar> bars = new List<bars>();

var agg = (from fa in mainList
           from pa in fa.subList
           from cg in pa.subSubList
           let cr = pa.anotherSubList
           where cg.DatePerformed.Year == DateTime.Now.Year - 1 && cr.Count != 0
           select foos.Add(fa)
           select bars.Add(pa));

編譯器在第二選擇時抱怨。

有沒有辦法在LINQ中做我想做的事情,還是我需要使用兩個循環?

您可以選擇兩個項目,然后遍歷結果以將一個項目添加到第一個列表,將另一個添加到另一個列表。 您可以使用可以容納兩個項目,元組或僅這樣的匿名類型的類來做到這一點:

var result = from fa in mainList
    from pa in fa.subList
    from cg in pa.subSubList
    let cr = pa.anotherSubList
    where cg.DatePerformed.Year == DateTime.Now.Year - 1 && cr.Count != 0
    select new {First=fa, Second=pa};
foreach (var pair in result)
{
    foos.Add(pair.fa);
    bars.Add(pair.pa);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM