除了迭代之外,我可以用IEnumerable(T)结果做什么?

时间:2013-12-04 23:26:10

标签: vb.net linq

好的,我是Linq的新手,我使用的是VB.NET。给定一个具有2个名为AttributeVariable和AttributeValue的属性的对象列表,我想为具有特定AttributeVariable值的集合中的第一个项选择AttributeValue。这是我的开始:

Dim query = From c In items 
                 Where c.AttributeVariable = "thename" 
                 Select c.AttributeValue

很酷,它可以工作,我可以在查询结果中找到每一个并写出结果。

由于c.AttributeValue是一个String,将列表中的第一个项目(只有一个)分配给字符串变量的最简单方法是什么?

1 个答案:

答案 0 :(得分:0)

FirstOrDefault怎么样? (还有SingleOrDefault和带有默认值的重载;请参阅文档。)

  

返回序列的第一个元素,如果序列不包含元素,则返回默认值。

然后:

Dim attribute = (From c In items 
                 Where c.AttributeVariable = "thename" 
                 Select c.AttributeValue).FirstOrDefault()

关键是在FirstOrDefault之前选择属性值(String) - 因此表达式的结果类型是String。

在任何情况下,虽然我认为不可能使用 查询语法来执行此操作,但这不会造成问题,因为(query)会返回一个IEnumerable,然后可以与“普通”可枚举扩展方法一起使用,如图所示。