c# - IEnumerable<动态> linq 表达式

标签 c# dynamic c#-4.0 linq-to-objects

我有客户动态列表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> .这会检查正在枚举的类型并尝试弄清楚如何处理它(链接对此进行了详细描述)。

这一切都像宣传的那样工作,除非被动态处理的类型不能被默认的相等比较器处理。在这种情况下,您必须使用采用自定义相等比较器的覆盖。

关于c# - IEnumerable<动态> linq 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5376923/

相关文章:

c# - iOS 运行错误 s Xamarin Live Player 和 Hanselman.Forms

c# - 为什么 typeof(T).IsEnum 返回 true,即使文档说它应该始终返回 false?

c# - 当页面在单击按钮时加载动态内容时,页脚 CSS 不起作用

c# - 特性信息有什么优势?

c#-4.0 - 我们如何实现两个具有相同方法名称的接口(interface)?

c# - iOS 设计具有可定制内容的 UITableViewCell

javascript - 如何创建从左下角到右上角的动态对 Angular 线?

html - 创建一个 html5 音频并播放它不起作用

c#-4.0 - WIF 4.5 声明值 - 未将对象引用设置为对象的实例

c# - 如果隐式已在 C# 中重载,则重载显式运算符是否有好处?