簡體   English   中英

如何轉換IEnumerable <AnonymousType> 到清單 <T> ?

[英]How to convert an IEnumerable<AnonymousType> to a List<T>?

我使用Linq過濾了List<Application>以連接該列表中的兩個字段並返回結果,現在需要將該列表返回給調用方法。

Linq過濾的結果為IEnumerable<AnonymousType>類型,因此我無法返回,因為我的方法返回類型為List<Application>

我最初嘗試做的是使用ToList方法轉換IEnumerable,但這會引發編譯器錯誤:

IEnumerable does not contain a definition for ToList()

題:

如何將IEnumerable轉換或轉換為List?

碼:

此分配是在List上執行的,以連接兩個字段並將其作為列表返回:

                var filteredAppList = applicationList.Select(c => new { c.RID, RID_APP_FIELD = c.RID + " " + c.BusinessFriendlyName });

下面是我嘗試將IEnumerable作為列表返回的方法:

                return filteredAppList.ToList<Application>();

問題是,先前的查詢返回了一系列匿名對象,我們正在嘗試將其轉換為Application類型。 造成問題的原因,請嘗試此。

filteredAppList.Select(x=> new Application() 
                          {
                              // set properties.

                          })
               .ToList();

如果您知道需要返回Application對象,則應避免使用匿名類型:

var filteredAppList = applicationList.Select(c => new Application { RID = c.RID, RID_APP_FIELD = c.RID + " " + c.BusinessFriendlyName });

return filteredAppList.ToList();

我假設您的匿名類型與您的“ Application類型嚴格相同,但事實並非如此。 您仍然可以在中間步驟中使用匿名類型,但是運行時幾乎無法將您的匿名類型自動轉換為Application ,因此將其投影回所需類型的實例幾乎是您唯一的選擇。

var filteredAppList = applicationList.Select(c => new { RID = c.RID, RID_APP_FIELD = c.RID + " " + c.BusinessFriendlyName });

return filteredAppList.Select(anon => new Application { RID = anon.RID, OtherApplicationProperty = anon.RID_APP_FIELD }).ToList();

暫無
暫無

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

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