[英]C# Linq How to select the distinct row count of multiple columns in a datatable
[英]Distinct on multiple columns in datatable
试图做一个SQL查询( SELECT DISTINCT (first,second),third FROM table
)会做什么,但是我正在用LINQ和一个数据SELECT DISTINCT (first,second),third FROM table
来做。
编辑
SQL应该看起来像一个Mysql
select first, second, third FROM table group by first, second
DataTable secondTable = new DataTable();
secondTable.Columns.Add("name", typeof(string));
secondTable.Columns.Add("date", typeof(string));
secondTable.Columns.Add("clockIn", typeof(string));
secondTable.Columns.Add("clockOut", typeof(string));
var t4 = (from a in firstTable.AsEnumerable()
select new
{
name = a.Field<string>("name"),
date = a.Field<string>("date"),
clockIn = a.Field<string>("clockIn"),
clockOut = a.Field<string>("clockOut")
}).Distinct();
var t5 = (from a in firstTable.AsEnumerable()
select new
{
name = a.Field<string>("name"),
date = a.Field<string>("date")
}).Distinct();
var t6 = (from d in t5
join a in t4
on new
{
d.name,
d.date
}
equals new
{
a.name,
a.date
}
select secondTable.LoadDataRow(
new object[]
{
d.name,d.date,a.clockIn,a.clockOut
}, false)).ToList();
ViewBag.Data = secondTable;
该代码的作用是,将t4
和t5
连接到t6
而没有任何排除。 虽然我的愿望是所有的行t4
存在于t5
应该加入t6
上(名称,日期),并从所有行的基础上, t5
不存在在t4
应被排除在外。 谁能帮忙吗?
从您的评论中,您可以按所需字段分组,然后进行分组。
您可以按时钟输入或时钟输出进行排序,以获得较少的“随机”结果。
var t6 = firstTable.AsEnumerable()
.GroupBy(a => new {
name = a.Field<string>("name"),
date = a.Field<string>("date")
}
)
.Select(g => g.First())
//or Select(g => g.OrderBy(a => a.Field<string>("clockIn")).First()
.ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.