首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >LINQ选择第一行

LINQ选择第一行
EN

Stack Overflow用户
提问于 2009-10-03 00:58:43
回答 4查看 66.8K关注 0票数 17

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

我使用foreach然后中断;但它必须是一种更好的方式吗?

我喜欢获取第一行的值;如果没有找到行,再检查一下。我的问题是在不使用foreach语句的情况下获取值。

我所做的是在我的DataTable中找到一个值,我知道行是唯一的;所以我喜欢做一个select并获得值;再加上检查是否没有命中以确保安全……:)

这是我现在使用的代码,如下所示

谢谢你,鲁恩

代码语言:javascript
复制
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;
}
EN

回答 4

Stack Overflow用户

发布于 2009-10-03 01:01:11

只需使用.FirstOrDefault()

代码语言:javascript
复制
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
}
票数 42
EN

Stack Overflow用户

发布于 2009-11-03 15:50:16

当我使用FirstOrDefault从列表中查找第一个项目时,我遇到了项目顺序(OrderBy)的问题。

我建议您使用TAKE来获取第一个项目:

代码语言:javascript
复制
var_QUERY_linq.Take(1).FirstOrDefault()

*如果可能,请始终使用sql事件探查器检查发送到SQL server的查询。

票数 4
EN

Stack Overflow用户

发布于 2009-11-03 16:06:38

.First()将只接受第一个参数,或者.Single()将接受第一个参数并在存在更多参数时引发异常

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1512471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档