计算Linq的行数

时间:2011-10-13 05:03:35

标签: c# .net linq

我是LINQ的新手

我写了以下查询:

var duplicate =
    from  loginId in DataWorkspace.v2oneboxData.me_employees
    where loginId.me_login_name == this.me_login_name
              && loginId.me_pkey != this.me_pkey
    select loginId;

我想计算结果副本中返回的行

我搜索过许多文章,说使用duplicate.Count()。但我在我的知识分子中看不到count()

我如何从结果算起

3 个答案:

答案 0 :(得分:22)

如何使用扩展方法:

 var count = me_employees.Where(me => me.me_login_name == this.me_login_name && me.me_pkey != this.me_pkey).Count();

更好:

var count = me_employees.Count(me => me.me_login_name == this.me_login_name && me.me_pkey != this.me_pkey);

BIG NOTE:确保您已引用System.Core。 System.Data.Linq也是如此,但我假设您已经引用它。

答案 1 :(得分:9)

您需要文件顶部的以下行:

using System.Linq;

但是Count上缺少的引用上会出现一个小帮助图标,Visual Studio会自动添加该行。

<强>更新: 这是一个完整的可编辑示例:

using System.Linq;

namespace ConsoleApplication11    {
    class Program
    {
        string me_login_name;
        int me_pkey;

        public static void Main()
        {
            new Program().Run();
        }

        private void Run()
        {
            IQueryable<v2oneboxDataEntity> me_employees = null;

            var duplicate =
                from  loginId in me_employees
                where loginId.me_login_name == this.me_login_name
                        && loginId.me_pkey != this.me_pkey
                select loginId;

            var count = duplicate.Count();            
        }

        // Define other methods and classes here
        class v2oneboxDataEntity 
        {
            public string me_login_name { get; set; }
            public int me_pkey { get; set; }
        }
    }
}

您使用的是哪个版本的Visual Studio?什么是.NET框架的目标版本? (需要&gt; = VS 2008,&gt; = .NET 3.5。)

答案 2 :(得分:2)

如果您正在使用lambda表达式,请确保已引用System.Linq.Expressions命名空间。

var cardCount = datatable
    .AsEnumerable()
    .Where(p => p.Field<decimal>("SpotID") ==
        Convert.ToDecimal(currentActivatedSpot))
    .Count();