Linq的新手;需要从单行中获取多个值

时间:2013-09-27 10:59:21

标签: vb.net linq

我正在尝试从数据表中检索多个列,但只从一行中检索 - 然后根据这些结果设置属性。我已经弄清楚如何运行多个查询以一次获取单个列,但必须有一种方法将它们全部组合到一个查询中。

以下是我认为可行的方法:

Dim colSettingsQry = From r In Me.GridProcColumnSettings.AsEnumerable _
                     Where r("DataFieldNm") = colNm _
                     Select New With _
                     { _
                        .uniqueNm = r.Field(Of String)("UniqueNm").Single(), _
                        .sortExpression = r.Field(Of String)("SortExpression").Single(), _
                        .headerTxt = r.Field(Of String)("HeaderTxt").Single(), _
                        .headerStyleWidth = r.Field(Of String)("HeaderStyleWidth").Single(), _
                        .dataFormatString = r.Field(Of String)("DataFormatTxt").Single() _
                     }

gridCol.SortExpression = From c In colSettingsQry _
                         Select c.sortExpression

gridCol.HeaderText = From c In colSettingsQry _
                     Select c.headerTxt

......等等。

我猜我有一些非常明显的东西 - 有人有建议吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我认为你正在寻找这个:

Dim colSettingsQry = ... (your query)
Dim setting = colSettingsQry.FirstOrDefault()

If setting IsNot Nothing Then
    gridCol.SortExpression = setting.SortExpression
    gridCol.HeaderText = setting.HeaderText
    ...
EndIf

FirstOrDefault,你可以获取序列的第一个元素,否则Nothing