Linq to sql Linq到数据集语法:如何从查询中正确选择特定字段并使用它们

Linq to sql Linq到数据集语法:如何从查询中正确选择特定字段并使用它们,linq-to-sql,Linq To Sql,当我简单地说“selectc”时,下面的代码可以工作,但我想选择id、名字和姓氏,而不是整行,因为它相当长 我对林克是个新手。我曾经使用匿名类型,但是被指示定义所有变量(因此所有变量都是“IEnumeralbe(of DataRow)”)。但是我遇到的示例中没有一个使用我想要的方式“选择”,并且它们不倾向于使用查询中选择的字段继续进行for循环 如有任何建议,将不胜感激 提前谢谢 没有意义。整个表已经在内存中,因此您所要做的就是增加开销。 LINQ从不复制值,所以优化它的唯一方法是完全删除列

当我简单地说“selectc”时,下面的代码可以工作,但我想选择id、名字和姓氏,而不是整行,因为它相当长

我对林克是个新手。我曾经使用匿名类型,但是被指示定义所有变量(因此所有变量都是“IEnumeralbe(of DataRow)”)。但是我遇到的示例中没有一个使用我想要的方式“选择”,并且它们不倾向于使用查询中选择的字段继续进行for循环

如有任何建议,将不胜感激

提前谢谢



没有意义。整个表已经在内存中,因此您所要做的就是增加开销。
LINQ从不复制值,所以优化它的唯一方法是完全删除列

要回答此问题,您需要选择以下选项:

您还可以使用与此等效的当前语法


因为您正在创建一个匿名类型,所以不能将其声明为
IEnumerable(属于DataRow)
;您必须使用
选项推断
并写入
Dim candMatches=From…

选项推断没有问题。谢谢!我想我需要对Linq做更多的研究,以正确掌握它的窍门。
    Dim cands As IEnumerable(Of DataRow) = ds.Tables("Candidates").AsEnumerable()
    Dim candPlace As IEnumerable(Of DataRow) = ds.Tables("JobCandPlacement").AsEnumerable()
    Dim candComp As IEnumerable(Of DataRow) = ds.Tables(dctSearchCriteria.Values(i).ToString).AsEnumerable()
    Dim strCandID As String = ""

    Dim candMatches As IEnumerable(Of DataRow) = From c In cands, cc In candComp, cp In candPlace
                Where c.Field(Of String)("candidateID") = cc.Field(Of String)("candID") _
                AndAlso cc.Field(Of String)("compSkill") = cSkill _
              Select c("candidateID"), c("firstName"), c("lastName")

   For Each cm As DataRow In candMatches 
        strCandID = ""
        strCandID = cm("candidateID") 
        increaseCandScore(strCandID)
        If Not dtSuitableCands.Rows.Contains(strCandID) Then
            Dim dr As DataRow = dtSuitableCands.NewRow
            dr("candID") = cm("candidateID")
            dr("candFName") = cm("firstName")
            dr("candLName") = cm("lastName")
            AddNewRow(dr)
        End If
    Next
Select New With { .ID = c("candidateID"), ... }