单列:
MyDataContext db = new MyDataContext();
var result = (from p in db.t_Personnel
select p.FirstName).Distinct();
DataTable dt = new DataTable("SingleDistinct");
dt.Columns.Add("FirstName");
foreach (var item in result)
{
DataRow dr = dt.NewRow();
dr["FirstName"] = item.ToString();
dt.Rows.Add(dr);
}
dataGridView1.DataSource = dt;
多列:
using System.Data;
using System.Collections;
namespace Test_Distinct
{
public class PersonDataRowComparer : IEqualityComparer<t_Personnel>
{
public bool Equals(t_Personnel t1, t_Personnel t2)
{
return (t1.ID == t2.ID && t1.FirstName == t2.FirstName);
}
public int GetHashCode(t_Personnel t)
{
return t.ToString().GetHashCode();
}
}
}
MyDataContext db = new MyDataContext();
IEnumerable distinctRows = db.t_Personnel.ToList().Distinct(new PersonDataRowComparer());
DataTable dt = new DataTable("SingleDistinct");
dt.Columns.Add("ID");
dt.Columns.Add("FirstName");
dt.Columns.Add("LastName");
foreach (var item in distinctRows)
{
DataRow dr = dt.NewRow();
dr["ID"] = item.ID;
dr["FirstName"] = item.FirstName;
dr["LastName"] = item.LastName;
dt.Rows.Add(dr);
}
dataGridView1.DataSource = dt;
如果是对于自定义类,此处要注意:
public class PersonDataRowComparer : IEqualityComparer <类名>
http://msdn.microsoft.com/en-us/library/bb338049.aspx
from:https://blog.csdn.net/q107770540/article/details/5784646
///
linq 集合按照多列进行distinct
List<TaskBatch> sourceList = (from c in BatchCollecion
group c by new
{
c.CustomId,
c.OutsourcingDate,
c.ServiceId
} into grp
select grp.First()).ToList();
或者
List<TaskBatch> sourceList = BatchCollecion.GroupBy(x => new { x.CustomId, x.ServiceId, x.OutsourcingDate }).Select(x => x.First()).ToList();
from:https://blog.csdn.net/swarb/article/details/19170133