如题,
thanks in advantace...

解决方案 »

  1.   


    var q = from o in tablename 
                        group o by o.zs into og
                        select new { Name = og.Key, Count = og.Count() };
      

  2.   

    意思就是,如果想利用  Count 就得用 group by 是吧?我看sql语句里,select 'zs', count(*) from table 这样是可以的,就觉着是不是 linq 就可以生成同样的句子,而不加group by
      

  3.   

    zs是一个字符串常量的话,就不用groupby了。
    var q = from o in table
                        
                        select new { Name ="zs", Count =table.Count() };
      

  4.   

    谢谢你及时回答。但如果有where条件呢,我如何获取Count?
      

  5.   

    count()带上条件参数或者selectq前加上where子句
      

  6.   

    var q = from o in table  
        where date>'2013-01-01'        
        select new { Name ="zs", Count =o.Count() };
    我是想当然的这么写的,但不对...
      

  7.   

    var q = from o in table  
        where o.date>'2013-01-01'        
        select new { Name ="zs", Count =o.Count() };
      

  8.   

    这个时候 用 o.Count 报错
    我在 LINQPad中试着写,报错Cannot execute text selection: “LINQPad.User.RA_MonthlyReportTemp”不包含“Count”的定义,并且找不到可接受类型为“LINQPad.User.RA_MonthlyReportTemp”的第一个参数的扩展方法“Count”(是否缺少 using 指令或程序集引用?)
      

  9.   

    var q = from o in table     
        select new { Name ="zs", Count =o.Count(o=>o.date>'2013-01-01') };你没有using using System.Linq;?
      

  10.   

    看一下我的这篇文章:
    http://blog.csdn.net/zjzhong/article/details/9269095
      

  11.   


    var q = from t in tablename 
            where t.date>'2013-01-01'
            group t by t.zs into temp
            select new 
            {
                Key = temp.Key, 
                Count = temp.Count()
             };
      

  12.   

    版主理解错我意思了我是想通过 linq得到 如下的sql语句:
    select 'Month total' as MonthTotal,count(1) as Num from tablename
    结果:
    MonthTotal    Num
    Month total   20
      

  13.   

    假如有一张表(DataTable),有SSHYZID、YHZMC、YHXM、YHXB等字段
             SSHYZID   YHZMC    YHXM    YHXB
         1      好友     张三     男
         1      好友     李四     男
         2      同事     王五     男
         现在要按YHZMC进行分组统计,可以通过以下Linq进行查询统计:
                 
                //用函数的写法
                 var fz = DsFriends.Tables[0].AsEnumerable().GroupBy(row =>
                     new { zid = row["SSHYZID"], zmc = row["YHZMC"] })
                     .Select(p => new { zid = p.Key.zid, zmc = p.Key.zmc, rs = p.Count() });
     
                //用Linq的写法
                 //var fz = from a in DsFriends.Tables[0].AsEnumerable()
                 //         group a by new { zid = a["SSHYZID"], zmc = a["YHZMC"] } into m
                 //         select new {id = m.Key.zid, mc = m.Key.zmc, rs = m.Count() };
             对查询结果fz,如果要将其转换成表(DataTable),可以通过以下函数实现
     
             /// <summary>
             /// 将Linq查询结果转换为表,表可以先定义结构,也可自动根据查询结果生成表结构
             /// </summary>
             /// <param name="result">Linq查询结果</param>
             /// <param name="table">表</param>
             public static void LinqResultToTable(IEnumerable result, ref DataTable table)
             {
                 if (result == null) return;
                 if (table == null)
                     table = new DataTable();
                 PropertyInfo[] pi = null;
                 foreach (var v in result)
                 {
                     if (pi == null)
                     {
                         //获取查询结果类的所有属性
                         pi = v.GetType().GetProperties();
                         if (pi == null) return;
                         foreach (PropertyInfo property in pi)
                         {
                             //如果表结构不包含此列,则根据属性名称和值类型自动添加到表中
                             if (table.Columns.Contains(property.Name))
                                 continue;
                             DataColumn dc = new DataColumn(property.Name, property.GetValue(v, null).GetType());
                             table.Columns.Add(dc);
                         }
                     }
                     DataRow row = table.NewRow();
                     table.Rows.Add(row);
                     foreach (PropertyInfo p in pi)
                     {
                         row[p.Name] = p.GetValue(v, null);
                     }
                 }
             }
     
    http://blog.csdn.net/zjzhong/article/details/9269095