加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

LINQ与匿名类型的区别(在VB.NET中)

发布时间:2020-12-17 00:04:04 所属栏目:大数据 来源:网络整理
导读:假设下面引用的List包含2个元素: Dim Countries = From c In List _ Select New With { .Country = c.Country,.CountryID = c.CountryID } 上面的代码返回 .Country=Spain .CountryID = 1.Country=Spain .CountryID = 1 我怎样才能获得不同的价值观?国家/
假设下面引用的List包含2个元素:
Dim Countries = From c In List _
                Select New With { .Country = c.Country,.CountryID = c.CountryID }

上面的代码返回

.Country=Spain .CountryID = 1
.Country=Spain .CountryID = 1

我怎样才能获得不同的价值观?国家/地区查询应仅包含

.Country=Spain .CountryID = 1
我只能假设你已经死于使用匿名类型,因为Alex Peck给出的答案是正确的. (我赞成它).

但是,这归结为VB.NET与C#编译器的讨论.

在VB.NET中,遇到匿名类型时,只有那些声明为键属性的属性才能用于比较.因此,在没有密钥的VB.NET中,当您尝试进行明确的比较时,不会发生任何事情.

Read all about it here.

首先,回答你的问题,这适用于匿名类型:

Dim Countries = From c In List Select New With {Key c.CountryId,c.Country} Distinct.ToList

这就是为什么freedompeace的答案不起作用的原因.

C#然而编译器有点不同.

遇到匿名类型并且需要进行比较操作时,c#编译器会覆盖Equals和GetHashCode.它将迭代匿名类型的所有公共属性,以计算对象的哈希代码以测试相等性.

And you can read more about that here.

希望这能回答你的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读