使用1-Result-Linq for For Each?还有其他选择

时间:2016-05-30 08:52:04

标签: vb.net linq

如果我得到一个Linq-Query,我知道它只会返回1个结果,如下所示:

Dim result = From g In Foo.Bar
    Where g.keyID = 1
    Select g

...我还需要使用For Each循环来获取值吗?还是我可以使用其他任何东西来处理1-result-queries?

For Each x In result
    TextBox1.Text = x.field1
    TextBox2.Text = x.field2
    TextBox3.Text = x.field3
Next

1 个答案:

答案 0 :(得分:3)

您可以使用Enumerable.First / Enumerable.FirstOrDefaultEnumerable.Single / Enumerable.SingleOrDefault(如果有多个,则为例外情况)。

Dim firstResult = result.FirstOrDefault()
If firstResult IsNot Nothing Then
    TextBox1.Text = firstResult.field1
    TextBox2.Text = firstResult.field2
    TextBox3.Text = firstResult.field3
End If
  • 如果可能存在多个但您想要第一个
  • ,请使用First
  • 如果您想要第一个,请使用Single,但如果有多个
  • ,那就是错误
  • 如果没有找到,则名称中没有OrDefault的方法将抛出异常
  • OrDefault方法将返回默认值(Nothing作为参考类型。)