linq如何提取一个int col并与0进行比较

本文关键字:并与 col 比较 int 何提取 提取 linq 一个 | 更新日期: 2023-09-27 18:25:13

我是linq的新手。。这就是我想做的

   bool bPresent = (from r in dsInternalInformation.Tables[0].AsEnumerable()
                                       select r.Field<int>("QstnCount")) > 0;

我想提取QstnCount的值,并将其与零进行比较,然后返回true或false。

基本上,我想把下面的语句转换成linq

int.Parse(dsInternalInformation.Tables[0].Rows[0]["QstnCount"].ToString())>0

请帮助

linq如何提取一个int col并与0进行比较

"select"是您从LINQ查询中得到的。使用"where"进行筛选。

猜测dsInternalInformation是一个DataSet,并且您希望了解是否有任何行的QstnCount>0:

bool bPresent = (from DataRow r in dsInternalInformation.Tables[0].Rows
                 where (int)r["QstnCount"] > 0 select r).Any();

您需要的是:

bool bPresent = (from r in dsInternalInformation.Tables[0].AsEnumerable()
    select r.Field<int>("QstnCount")).ToList().FirstOrDefault() > 0;

select r.Field<int>("QstnCount")部分将导致返回所有QstnCount值的集合,因此您需要将其设为泛型List,然后取第一个值(如果存在)-现在您得到了可以与0进行比较的普通整数。

不需要LINQ,也不需要int.Parse。因此改进是删除ToString和Parse。如果QstnCount已经是int类型,只需将其强制转换为int类型或使用Field扩展方法。

dsInternalInformation.Tables[0].Rows[0].Field<int>("QstnCount") > 0

或者:

((int)dsInternalInformation.Tables[0].Rows[0]["QstnCount"]) > 0

或者:

dsInternalInformation.Tables.First().Rows.First().Field<int>("QstnCount") > 0

看起来您对集合不感兴趣,只对第一个(可能也是唯一一个)表中第一行(可能也是惟一一行)的QstnCount值感兴趣。那么就不需要LINQ了,因为LINQ用于查询列表和树。如果您只想查询一个对象,那么不要使用它来进一步使事情复杂化。