LINQ选择第一行

17 linq select

如何在不使用foreach的情况下选择linq select语句中的第一行?

我用foreach然后休息; 但它必须是一个更好的方式?

我喜欢在第一行获得价值; 加上检查是否找不到行.我的问题是在没有foreach语句的情况下获取值.

我所做的是在我的DataTable中找到一个值,我知道该行是独一无二的; 所以我喜欢做一个选择并获得价值; 加上检查一下是否有安全...... :)

这是我现在使用的代码,见下文

谢谢,符文

var var_QUERY_linq = 
    from vm_TABLE_PK in vco_DataTable_PK.AsEnumerable()
    where vm_TABLE_PK.Field<Int32>( "MyField_Int32" ) == vmp_ROW_Counter_Int32
    select vm_TABLE_PK;

foreach ( DataRow o_DataRow in var_QUERY_linq )
{
       vmp_Return_string = o_DataRow.Field<string>( "Myfield_nvarchar" );

       break;
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*oie 40

只需使用.FirstOrDefault()

var var_QUERY_linq = (
    from vm_TABLE_PK in vco_DataTable_PK.AsEnumerable()
    where vm_TABLE_PK.Field<Int32>( "MyField_Int32" ) == vmp_ROW_Counter_Int32
    select vm_TABLE_PK).FirstOrDefault();

if(var_QUERY_linq != null)
{
    //There is a record
}
Run Code Online (Sandbox Code Playgroud)

  • 当没有返回任何东西时,第一个()抛出和异常,而FirstOrDefault()返回null(在我见过的每种情况下). (11认同)
  • @David Hall是对的.如果您希望始终存在一个或多个记录,请使用.First(),以便在未发生时获得异常.如果您期望没有记录的可能性,请使用.FirstOrDefault()并检查null并正确处理. (3认同)