我确信这很容易(或者我完全错了),但是我要做的就是针对数据表上的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吗?非常感谢。
布雷特
答案 0 :(得分:1)
如果您知道LINQ查询会产生单个结果,请致电Single
。
Dim result = qryB.Single()
如果可能没有结果,但不会超过一个,则您致电SingleOrDefault
,结果可能是Nothing
。如果将至少有一个结果但可能会有更多结果,而您只想获得第一个结果,请致电First
。如果可能为零,则为一个或多个,如果要为第一个,则为第一个,然后调用FirstOrDefault
,结果可能为Nothing
。
请注意,某些LINQ提供程序不支持这两个选项,例如LINQ to Entities(实体框架的LINQ提供程序)支持First
和FirstOrDefault
,但不支持Single
或SingleOrDefault
(除非最近有所更改),如果我没有记错的话,LINQ to SQL支持Single
和SingleOrDefault
,但不支持First
或FirstOrDefault
。
请注意,如果要使用ElementAt
,则必须指定0作为索引。 ElementAt
的工作原理与索引数组或其他IList
的索引非常相似,因此第一项位于索引0。但是,对于查询结果中间的内容,您只会使用ElementAt
,假设您拥有Single
,First
和Last
方法及其可为空的等效项。