数据表上的LINQ结果没有for循环

时间:2019-02-25 22:25:30

标签: vb.net linq datatable

我确信这很容易(或者我完全错了),但是我要做的就是针对数据表上的LINQ查询获取单个值,而不是使用for ..每个循环来访问它们。 / p>

场景。 我有一个包含许多行的数据表。我运行查询以查找“ EP”上的特定匹配,例如。.

Dim qryB = From rw In oDT_Cables Where rw("EP").Equals(br.Position) Select ld = rw("LOAD"), tl = rw("TOT-LEN")

现在。 我知道我只有一个结果(由于插入时检查了),那么我如何简单地访问ld和tl项,而不必为每个循环使用a?

我尝试过:

qryb.elementat(1)   error
qryb.elementat(ld)  Not possible
qryb.tl             not possible

有人知道我如何从查询中访问tl和ld吗?非常感谢。

布雷特

1 个答案:

答案 0 :(得分:1)

如果您知道LINQ查询会产生单个结果,请致电Single

Dim result = qryB.Single()

如果可能没有结果,但不会超过一个,则您致电SingleOrDefault,结果可能是Nothing。如果将至少有一个结果但可能会有更多结果,而您只想获得第一个结果,请致电First。如果可能为零,则为一个或多个,如果要为第一个,则为第一个,然后调用FirstOrDefault,结果可能为Nothing

请注意,某些LINQ提供程序不支持这两个选项,例如LINQ to Entities(实体框架的LINQ提供程序)支持FirstFirstOrDefault,但不支持SingleSingleOrDefault(除非最近有所更改),如果我没有记错的话,LINQ to SQL支持SingleSingleOrDefault,但不支持FirstFirstOrDefault

请注意,如果要使用ElementAt,则必须指定0作为索引。 ElementAt的工作原理与索引数组或其他IList的索引非常相似,因此第一项位于索引0。但是,对于查询结果中间的内容,您只会使用ElementAt,假设您拥有SingleFirstLast方法及其可为空的等效项。