簡體   English   中英

LINQ以匿名類型獲取集合

[英]LINQ get collection in anonymous type

我有以下LINQ語句:

var query =(from item in _itemRepository.FindAll()
            where item.Id == "20649458"
                from singelitem in item.ListOfChildren
                where singelitem.Property == "singelitem"
                from manyitems in item.ListOfChildren
                where manyitems.Property == "many"
                select new
                            {
                                item.Id,
                                singelitem,
                                manyitems 
                            });
var result = query.ToList();

Tasks是對象的集合,而where子句 tasks.Property == "something"匹配集合中的多個項目,但是當我在select中使用匿名類型時,我只會取回匹配結果中的一個(第一個)而不是任務的集合。 如何獲取集合中所有匹配的任務?

編輯:真正發生的是我得到了平面對象(就像從join語句得到的數據庫結果集一樣)。

當您不使用匿名類型時,您要處理的是實體類,該實體類在訪問任務時會延遲加載任務。 如果您想用結果加載任務,請嘗試使用Include方法來渴望加載子級。 請參見如何構造LINQ to Entities查詢以直接加載子對象,而不是調用Reference屬性或Load()

這是Linq的正確行為。 實際上,您所期望的是不可能的。 您需要一個與item.Id相匹配的項目。Id==“ 123”; 如果不止一個怎么辦? 它只是為每個匹配項創建一個匿名項。 只需考慮將第一個“ from”語句更改為第二個; 您會期望什么?

同樣,第一個“ from”語句和第二個“ from”語句之間沒有任何關系,這使得此查詢有點“奇怪”。 為什么不將查詢分為2個; 並創建具有所需屬性的新對象?

暫無
暫無

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

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