查询数据集以进行计数

时间:2015-03-09 20:26:59

标签: c# linq

我如何得到

的数量
var resHT = from row in ds.Tables[1].AsEnumerable()
            where row.Field<int>("a") == Convert.ToInt32(a.Value) && row.Field<int>("b") == 1
            select new {
                        TypeDescription = row.Field<string>("c"),
                        NameOrSpecs = row.Field<string>("d"),
                        AvailabilityBy = row.Field<DateTime?>("e")
                        };

我如何得到resHT的数量。我对linq来说是个新手

1 个答案:

答案 0 :(得分:2)

var count = resHT.ToList().Count();

通过使用Select命令执行new,您实际上是在创建匿名类型的IQueryable。我不知道没有ToList()的代码错误的确切原因,但添加ToList()会将您的返回数据转换为匿名类型的ListList类上有一个count属性,这就是为什么我让你做ToList

我知道如果您执行LINQ-to-SQL,ToList会强制查询实际执行,然后会删除匹配的所有数据并创建您的匿名类型,然后可以对其进行计数。如果您正在使用内存中的DataTable,我不确定为什么需要这样做。我没有对DataTables做太多的LINQ,所以我还没有玩过很多。