110,533
社区成员
发帖
与我相关
我的任务
分享
/*利用DataTable的Select方法和分组*/
DataRow[] selectedRows = dataTable.Select("Select Max(id), Max(name) From TableName Group By id, name");
这样应该就可以了DataTable table = new DataTable();
table.Columns.Add("ID", typeof(int));
table.Columns.Add("Name", typeof(string));
table.Rows.Add(new object[] { 1, "ss" });
table.Rows.Add(new object[] { 1, "ss" });
table.Rows.Add(new object[] { 2, "rr" });
table.Rows.Add(new object[] { 3, "dd" });
table.Rows.Add(new object[] { 3, "dd" });
table.Rows.Add(new object[] { 3, "cc" });
table.Rows.Add(new object[] { 4, "tt" });
table.Rows.Add(new object[] { 4, "tt" });
table.Rows.Add(new object[] { 5, "gg" });
table.Rows.Add(new object[] { 5, "gg" });
table.Rows.Add(new object[] { 5, "gg" });
table.Rows.Add(new object[] { 5, "gg" });
var result = from t in table.AsEnumerable()
group t by new { ID = t.Field<int>("ID"), Name = t.Field<string>("Name") } into g
select new { ID = g.Key.ID, Name = g.Key.Name, Count = g.Count() };
var finalResult = result.GroupBy(p => p.ID).Select(g => g.OrderByDescending(c => c.Count).First());
finalResult.ToList().ForEach(r => Console.WriteLine(string.Format("{0}-{1}-{2}", r.ID, r.Name, r.Count)));
DataTable dt = new DataTable();
dt.Columns.Add("1");
dt.Columns.Add("2");
string[] c1 = new string[] { "1", "1", "2", "3", "3", "3", "4", "4", "5", "5", "5", "5", };
string[] c2 = new string[] { "ss", "ss", "rr", "dd", "dd", "cc", "tt", "tt", "gg", "gg", "gg", "gg", };
for (int i = 0; i < 12; i++)
{
DataRow dr = dt.NewRow();
dr[0] = c1[i];
dr[1] = c2[i];
dt.Rows.Add(dr);
}
Dictionary<string, string> d = new Dictionary<string, string>();
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < i; j++)
{
if (dt.Rows[i][0].ToString() == dt.Rows[j][0].ToString() && dt.Rows[i][1].ToString() == dt.Rows[j][1].ToString())
{
d[dt.Rows[i][0].ToString()] = dt.Rows[i][1].ToString();
}
}
}