如何在不使用foreach的情况下选择linq select语句中的第一行?
我使用foreach然后中断;但它必须是一种更好的方式吗?
我喜欢获取第一行的值;如果没有找到行,再检查一下。我的问题是在不使用foreach语句的情况下获取值。
我所做的是在我的DataTable中找到一个值,我知道行是唯一的;所以我喜欢做一个select并获得值;再加上检查是否没有命中以确保安全……:)
这是我现在使用的代码,如下所示
谢谢你,鲁恩
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;
}
发布于 2009-10-03 01:01:11
只需使用.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
}
发布于 2009-11-03 15:50:16
当我使用FirstOrDefault从列表中查找第一个项目时,我遇到了项目顺序(OrderBy)的问题。
我建议您使用TAKE来获取第一个项目:
var_QUERY_linq.Take(1).FirstOrDefault()
*如果可能,请始终使用sql事件探查器检查发送到SQL server的查询。
发布于 2009-11-03 16:06:38
.First()将只接受第一个参数,或者.Single()将接受第一个参数并在存在更多参数时引发异常
https://stackoverflow.com/questions/1512471
复制相似问题