簡體   English   中英

在linq中合並兩個查詢

[英]Combine two queries in linq

我有兩個linq查詢,如下所示:

GroupNamesWithCorrespondingEffects 
        = new ObservableCollection<GroupNameWithCorrespondingEffect>(
                                  from g in db.Groups
                                  select new GroupNameWithCorrespondingEffect
                                                {
                                                    GroupID = g.GroupID,
                                                    GroupName = g.GroupName,
                                                    CorrespondingEffect = g.Master_Effects.Effect

                                                }
                                         );

 GroupNamesWithCorrespondingEffects 
          = new ObservableCollection<GroupNameWithCorrespondingEffect>       
                       (GroupNamesWithCorrespondingEffects.
                            Where(u => !GetAllChildren(25).
                                        Select(x => x.GroupID).
                                        Contains(u.GroupID)).ToList());

現在如何結合這兩個查詢?

您可以直接將此傳遞給ObservableCollection的構造函數:

from g in groups
let g = select new GroupNameWithCorrespondingEffect
        { 
            GroupID = g.GroupID,
            GroupName = g.GroupName,
            CorrespondingEffect = g.Master_Effects.Effect
        }
where !GetAllChildren(25)
       .Select(x => x.GroupID)
       .Contains(g.GroupID)
select g

我不確定EF是否能夠組成第一部分和第二部分(我不記得從頂部開始是否Contains IN子句中的Contains ,我的EF有點生銹),但是您沒有無論如何,這樣做的效果與您相同。 如果它能夠撰寫,那么通過這種方式您將獲得更有效的執行。

如果您不介意將SQL樣式和擴展方法語法混合使用,則可以執行以下操作:

GroupNamesWithCorrespondingEffects 
        = new ObservableCollection<GroupNameWithCorrespondingEffect>(
                (from g in groups
                 select new GroupNameWithCorrespondingEffect
                     { GroupID = g.GroupID,
                       GroupName = g.GroupName,
                       CorrespondingEffect = g.Master_Effects.Effect
                     })
                 .Where(u => !GetAllChildren(25)
                        .Select(x => x.GroupID)
                        .Contains(u.GroupID))
                 .ToList());

暫無
暫無

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

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