[英]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.