Linq、VB - 匿名类型无法转换为匿名类型

2024-03-24

我是 Linq 菜鸟,也许有人可以指出我正确的方向。这是怎么回事?这些匿名类型似乎具有相同的签名。

          '*** Get all of the new list items'
          Dim dsNewFiles = From l1 In list1 _
                           Where Not (From l2 In list2 _
                                      Select l2.id, l2.timestamp).Contains(New With {l1.id, l1.timestamp})

我希望有某种方法可以在上面的代码中突出显示,但我收到编译错误:

Value of type '<anonymous type> (line n)' cannot be converted to '<anonymous type> (line n)'.

在“.包含(新的 {l1.id, l1.timestamp})"

我认为它认为匿名类型在某种程度上是不同的,但两个列表中的 id 和时间戳列是相同的。它们的顺序也相同。两者之间还有什么不同?

[美国东部时间 2009 年 7 月 10 日 16:28 编辑]

我尝试了用户 Meta-Knight (New With {Key l1.id, l1.timestamp}) 的建议代码,它修复了编译错误。但是,当我使用 List1 和 List2 运行代码时,如下所示:

List1                         List2
id     timestamp              id     timestamp
--     ----------             --     ----------
01     2009-07-10 00:00:00    01     2009-07-10 00:00:00

结果是:

dsNewFiles
id     timestamp
--     ----------
01     2009-07-10 00:00:00

它应该是一个空列表。


只需将代码的最后部分更改为:

New With {Key l1.id, Key l1.timestamp}

我测试了代码并且它有效。

Edit:

我不知道为什么这对你不起作用,为了确定起见,我将发布整个代码。

Dim dsNewFiles = From l1 In list1 _
                           Where Not (From l2 In list2 _
                                      Select l2.ID, l2.TimeStamp).Contains(New With {Key l1.ID, Key l1.TimeStamp})

另一种选择是简单地执行以下操作:

Dim dsNewFiles = list1.Except(list2)

为此,您的类必须重写 Equals 和 GetHashCode,并实现 IEquatable(Of T) 接口。有一个很好的例子on MSDN http://msdn.microsoft.com/en-us/library/bb300779.aspx(在底部)。

如果 ID 和 Timespan 在类中不表示相等,则可以使用自定义 IEqualityComparer(Of T) 作为第二个参数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linq、VB - 匿名类型无法转换为匿名类型 的相关文章

  • 计算 IEnumerable 的计数(非泛型)

    谁能帮我一个Count扩展方法为IEnumerable 非通用接口 我知道LINQ不支持它 但是如何手动编写呢 yourEnumerable Cast Count 关于性能的评论 我认为这是过早优化的一个很好的例子 但你可以看一下 stat
  • 使用 Linq 获取当前和上一个项目

    我有一个 Offer 类 例如 public class Offer public int OfferID get set public DateTime OfferDate get set public int CustomerID ge
  • VB.NET 中的 IndexOf 与字符串数组

    如何在以下代码中找到字符串数组中项目的索引 Dim arrayofitems as String Dim itemindex as UInteger itemindex arrayofitems IndexOf item test Dim
  • LINQ 中的左外连接

    下面的代码不断给我一个错误消息 你调用的对象是空的 var partsWithDefaults from partsList1 in p join partsList2 in d on new PartNo partsList1 PartN
  • 如何覆盖/更新当前由 IIS 提供服务的文件?

    问题 我的公司每月发布一份时事通讯 我将其托管在我们的内部网站上 我有一个供时事通讯作者上传最新版本的页面 作者上传最新的新闻通讯后 他会发送一封广播电子邮件来宣布新的新闻通讯 员工总是会检查新的时事通讯并向作者发送反馈以及需要进行的更正
  • 只允许在 datagridview 单元格中键入一些字符

    有没有办法只将某些字符添加到 datagridview 单元格中 像 1234567890 据我所知 您可以使用两种方法来实现此目的 第一个 我认为最好的 是使用 CellValidating 事件DataGridView并检查输入的文本是
  • 强制执行 IQueryable?

    我有一个 没有转换为 SQL 的方法 我想在 IQueryable 上执行该方法 有没有办法强制 IQueryable 执行 而不必将其存储在某个中间类中 问题是您希望您的方法在本地执行而不是在数据库中执行吗 如果是这样 AsEnumera
  • 将二维数组绑定到数据网格中

    所以我的情况是我想从数据库中的两个字段填充一个二维数组 我在为数组分配数据库字段值时遇到问题 第二个是在数据网格中显示数组 我已经编码了 dgv2 Datasource myArray 但它仍然返回错误消息 这是我的代码 Dim msql
  • SQL 与 LINQ 性能 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • PMT功能 支付方式

    下面是我计算贷款付款的函数 就像在 Excel 中一样 我需要添加另一个参数 即付款类型 function PMT ir np pv fv ir interest rate per month np number of periods mo
  • 自定义编译器警告

    在 Net 中使用 ObsoleteAtribute 时 它 会向您发出编译器警告 告诉您该对象 方法 属性已过时 应使用其他内容 我目前正在从事一个需要大量重构前员工代码的项目 我想编写一个自定义属性 可用于标记方法或属性 这些方法或属性
  • LINQ:根据列值选择重复行

    我试图在我的 DataGrid 中显示那些共享相同列值的行 例如 对于具有相同姓氏的人 我尝试了以下方法 dataGrid ItemsSource dataContext Addresses GroupBy a gt a SurName W
  • 如何通过列表中的属性值获取/查找对象

    我有一个关于通过使用 LINQ 搜索 字段名称来获取列表对象的问题 我编码简单Library and Book为此类 class Book public string title get private set public string
  • 非托管代码调用 vb.net 回调

    我正在将处理 COM 对象事件的 vb net 应用程序 可能用 VB6 编写 从框架 1 1 升级到 WPF 2 0 3 5 代码 为简洁起见 简化了对象名称 public class MyClass Private WithEvents
  • 实体框架将本地数据添加到数据库中的列表

    我对实体框架相当陌生 我正在使用此方法来查询我的数据库 var context new StudioEntities var results context tblStudios Select u gt new u Standort u N
  • 安装文件失败调试已启用

    我之前使用过安装项目 没有任何问题 该项目没有 SQLite DB 作为依赖项我现在正在尝试为一个包含 SQLite 作为 System Data SQLite Core 的项目制作一个 EXE 或 msi 文件 该项目是一个带有 WPF
  • 使用 linq 和 sum 聚合列表

    我正在尝试合并一个我正在序列化的可枚举列表 我的数据看起来像这样 Internet explorer 10 Internet explorer 15 Mozille firefox 10 我的样子是这样的 Internet explorer
  • 实体框架中的嵌套查询

    我收到以下异常 不支持嵌套查询 操作 1 案例 操作 2 收集 通过这个查询 var Games context Games Select a gt new GameModel Members a Type 1 a UsersInGames
  • 为什么 VB.NET 和 C# 中针对值检查 null 存在差异?

    In VB NET http en wikipedia org wiki Visual Basic NET有时候是这样的 Dim x As System Nullable Of Decimal Nothing Dim y As System
  • 将图像文件从网址复制到本地文件夹?

    我有该图像的网址 例如 http testsite com web abc jpg http testsite com web abc jpg 我想将该 URL 复制到 c images 中的本地文件夹中 而且当我将该文件复制到文件夹中时

随机推荐