2012-02-20 39 views
0

我是新来的LINQ比较.. 这就是我要做的LINQ如何拉一个int山口和0

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

请帮忙

+1

什么是Linq数据源。一个列表,sql,实体框架? – 2012-02-20 08:15:49

+0

你想知道是否至少有一行的QstnCount> 0,或者QstnCount> 0是否在特定行中? – 2012-02-20 08:26:14

回答

2

“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(); 
+0

@Karan补充说明 – Karan 2012-02-20 08:19:09

+0

。 – 2012-02-20 08:20:51

+0

抱歉,语法不正确 – Karan 2012-02-20 08:22:08

0

你需要的是这样的:

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

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

0

不需要任何LINQ,也不需要int.Parse。所以改进是删除ToString和Parse。如果QstnCount已经是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用于查询列表和树。如果你只是想查询一个对象,那就不要用它来进一步复杂化。