在数据库有这么些数据:
id name text date
2 张三 波波 2015-07-07
3 张三 波波 2015-07-07
4 张三 波波 2015-07-07
5 张三 探戈 2015-08-20
6 张三 探戈 2015-08-20
7 张三 探戈 2015-08-20
8 张三 探戈 2015-08-20
想通过linq表达式,从数据库获取出来所有数据后进行提取,最后组合成这样
id name text date
2 张三 波波 2015-07-07
5 张三 探戈 2015-08-20
有哪位大神会的,,,教教新手,,先谢了
都没看明白什么意思。。。
它想要的就是对 name、text、date distinct。
@Launcher: 是的,没错
好像可以直接对集合distinct吧。
试过的,但是如何select出来三个字段?
@玩世不恭的雷寅: linq里面的去除重复我记得应该是面向整个对象的,好像单个和多个字段不行。
自己查查LINQ怎么使用Group 吧。
试试这个,var value=(from v in db.tbl select v.name).Distinct().ToList();
我用过这种方式,但是查询出来的数据只有对name值的筛选,我想最后distinct出的数据有name、text和date三个字段
@玩世不恭的雷寅: @玩世不恭的雷寅: http://blog.csdn.net/q107770540/article/details/5784646
//最后保存到DataTable
DataTable result = new DataTable();
result.Columns.Add("id");
result.Columns.Add("name");
result.Columns.Add("text");
result.Columns.Add("date");
var query = from t in 你取出来的数据源.AsEnumerable() group t by new
{ t1 = t.Field<string>("name"),
t2 = t.Field<string>("text"),
t3 = t.Field<string>("date")}into m
select new {
sname = m.Key.t1,
stext = m.Key.t2,
date = m.Key.t3,
id = m.First().Field<string>("id") };
foreach (var ab in query.ToList())
{
DataRow dr = result.NewRow();
dr["id"] = ab.id;
dr["name"] = ab.sname;
dr["text"] = ab.stext;
dr["date"] = ab.date;
result.Rows.Add(dr);
}