好的,我是Linq的新手,我使用的是VB.NET。给定一个具有2个名为AttributeVariable和AttributeValue的属性的对象列表,我想为具有特定AttributeVariable值的集合中的第一个项选择AttributeValue。这是我的开始:
Dim query = From c In items
Where c.AttributeVariable = "thename"
Select c.AttributeValue
很酷,它可以工作,我可以在查询结果中找到每一个并写出结果。
由于c.AttributeValue是一个String,将列表中的第一个项目(只有一个)分配给字符串变量的最简单方法是什么?
答案 0 :(得分:0)
FirstOrDefault
怎么样? (还有SingleOrDefault
和带有默认值的重载;请参阅文档。)
返回序列的第一个元素,如果序列不包含元素,则返回默认值。
然后:
Dim attribute = (From c In items
Where c.AttributeVariable = "thename"
Select c.AttributeValue).FirstOrDefault()
关键是在FirstOrDefault之前选择属性值(String) - 因此表达式的结果类型是String。
在任何情况下,虽然我认为不可能使用 查询语法来执行此操作,但这不会造成问题,因为(query)
会返回一个IEnumerable,然后可以与“普通”可枚举扩展方法一起使用,如图所示。