LINQ计数其中1列有两个int

时间:2014-08-20 18:03:05

标签: c# sql asp.net linq

我正在尝试使用ASP.NET LINQ计算数据库中的行数 这里的目标是:

 Select * from ChangeBoards WHERE status_id = 1 OR status_id = 3 

现在让我们假设数据库看起来像

id :  INT       
status _id INT  


id:1 status_id:1

id:2 status_id:3

id:3 status_id:2

使用下面我的输出应该是2.为什么不是?

var Open = db.ChangeBoards.AsEnumerable()
                .Where(x => x.status_id.Equals("1") || x.status_id.Equals("3")
                .ToList()
                .Count();

以上内容并未给出任何统计数字。它始终显示为零。

如何计算表中具有列中特定数据的行?

1 个答案:

答案 0 :(得分:4)

简单地说:

var Open = db.ChangeBoards.Count(x=> x.status_id == 1 || x.status_id == 3);

我认为与Equals比较不会返回记录。

从SQL查询表单看来,status_id是数字类型,您首先枚举内存中的所有行,然后在{{1}之间进行对象比较(使用等于)和字符串status_id。那将永远是假的。这也将需要不必要的资源使用,因为它将首先将表加载到内存中,然后比较/计算计数。