如何用linq生成select 'zs',count(*) from tablename
如题,thanks in advantace... --------------------编程问答-------------------- 'zs'是字符串还是字段名? --------------------编程问答--------------------
--------------------编程问答-------------------- 我想得到的结果 如
var q = from o in tablename
group o by o.zs into og
select new { Name = og.Key, Count = og.Count() };
zs 15 --------------------编程问答-------------------- 意思就是,如果想利用 Count 就得用 group by 是吧?
我看sql语句里,select 'zs', count(*) from table 这样是可以的,
就觉着是不是 linq 就可以生成同样的句子,而不加group by --------------------编程问答--------------------
zs是一个字符串常量的话,就不用groupby了。
var q = from o in table--------------------编程问答-------------------- 谢谢你及时回答。
select new { Name ="zs", Count =table.Count() };
但如果有where条件呢,我如何获取Count?
--------------------编程问答--------------------
count()带上条件参数或者selectq前加上where子句 --------------------编程问答-------------------- var q = from o in table
where date>'2013-01-01'
select new { Name ="zs", Count =o.Count() };
我是想当然的这么写的,但不对... --------------------编程问答--------------------
var q = from o in table
where o.date>'2013-01-01'
select new { Name ="zs", Count =o.Count() }; --------------------编程问答-------------------- 这个时候 用 o.Count 报错
我在 LINQPad中试着写,报错
Cannot execute text selection: “LINQPad.User.RA_MonthlyReportTemp”不包含“Count”的定义,并且找不到可接受类型为“LINQPad.User.RA_MonthlyReportTemp”的第一个参数的扩展方法“Count”(是否缺少 using 指令或程序集引用?) --------------------编程问答-------------------- var q = from o in table
select new { Name ="zs", Count =o.Count(o=>o.date>'2013-01-01') };
你没有using using System.Linq;? --------------------编程问答-------------------- 看一下我的这篇文章:
http://blog.csdn.net/zjzhong/article/details/9269095 --------------------编程问答--------------------
--------------------编程问答-------------------- 版主理解错我意思了
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()
};
我是想通过 linq得到 如下的sql语句:
select 'Month total' as MonthTotal,count(1) as Num from tablename
结果:
MonthTotal Num
Month total 20 --------------------编程问答-------------------- 假如有一张表(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
补充:.NET技术 , C#