簡體   English   中英

IEnumerable的 <dynamic> linq表達

[英]IEnumerable<dynamic> linq expressions

我有動態的客戶名單IEnumerable<Customer>

現在我想從該列表中獲得明顯的公司名稱?

我以為我可以做點什么

 dynamic cur = (from c in result.Customers
                      select g.CompanyName).Distinct();

但今天學到了我不能......我怎么能建立這樣的查詢呢?

您在代碼中所做的以及您在問題標題中提出的問題是兩回事。

如果您想要IEnumerable<dynamic>您必須執行以下操作:

IEnumerable<dynamic> cur = (from c in result.Customers
               select g.CompanyName).Cast<dynamic>().Distinct();

from c in result.Customers select g.CompanyName返回IEnumerable<string>
Cast<dynamic>()返回IEnumerable<dynamic>
Distinct()返回可枚舉的不同成員。

默認情況下, Distinct()使用默認的相等比較器EqualityComparer <T> 這將檢查枚舉的類型並嘗試找出如何處理它(鏈接詳細描述了這一點)。

除非動態處理的類型無法由默認的相等比較器處理,否則這一切都與廣告一樣。 在這種情況下,您將必須使用帶有自定義相等比較器的覆蓋。

只要Customer類具有成員CompanyName ,您肯定可以執行以下操作:

var companies = (from c in result.Customers
                 select c.CompanyName).Distinct();

這里使用dynamic關鍵字對var沒有任何好處,除了它會阻止編譯器錯誤出現的事實。

暫無
暫無

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

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