【问题标题】:LINQ Select Syntax VB.NETLINQ 选择语法 VB.NET
【发布时间】:2019-10-12 17:16:29
【问题描述】:

我有一个Tuples 列表我正在尝试运行SelectWhere 查询以从Tuple.Item5 参数返回Objects 列表。在我的 where 子句中,我希望将 Tuple.Item4 与局部变量匹配。

我不确定选择部分的 VB.NET 语法是什么,我只知道 c# 语法。

基本上我试图从我的元组列表中选择Tuple.Item5,其中 Tuple.Item4 = sCurID。我不确定 Select 部分应该做什么,尽管在 c# 中我相信它会是 Select(t => t.Item5)

这就是我所拥有的:

listObj = listTuples.Select( Unsure What Goes Here ).Where(Function(w) w.Item4 = sCurID)

【问题讨论】:

  • 与 Where 部分使用的相同
  • @Steve 不一样。 Where 接受一个函数,给定一个序列元素,返回一个 Boolean - 充当过滤器。 Select 采用一个函数,给定一个序列元素,返回一个相关对象——要在结果序列中收集的对象。这些是不同的返回类型和用途。

标签: vb.net linq


【解决方案1】:

在 C# 或 VB 中应用 Select 后,您已将元组缩减为 Item5 值,并且无法访问 Item4。最后做Select

Dim listObj = listTuples.Where(Function(t) t.Item4 = sCurId).Select(Function(t) t.Item5)

【讨论】:

    【解决方案2】:
    listObj = listTuples.Select(Function(t) t.Item5).Where(Function(w) w.Item4 = sCurID).ToList()
    

    【讨论】:

    • 问题是当我使用它时,我的 w 变量是一个对象而不是一个元组,我试图过滤它。它只有在选择部分返回的我的 t.Item5 的属性,而不是元组项的属性。
    • 它有 t.item5 因为你告诉它。如果你想要整个元组,你应该只需要 "...Select(Function(t) t)
    猜你喜欢
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    相关资源
    最近更新 更多