对记录列表进行排序,以便首先显示具有最多共同值的记录。
I thought I found the solution in this link, but this only sorts by the first value.
我的未分类列表看起来像这样......
我希望我的排序列表看起来像这样......
基于以上链接我厌倦了守则......
lp = lp.GroupBy(x => x.Name)
.OrderByDescending(g => g.Count())
.SelectMany(g => g).ToList();
dataGridView2.DataSource = lp;
但正如所解释的那样,这只是按照第一个最常见的项目排序。
答案 0 :(得分:1)
试试这个:
var result = lp.OrderBy(c => c.Value1).ThenBy(n => n.Value2).ThenBy(n => n.Value3)
答案 1 :(得分:0)
如果我理解得很好......你可以试试这个
lp.Select(t => new {
Thing = t, Coincidences = lp.Max(t2 =>
t2 != t ?
Convert.ToInt32(t2.Value1 == t.Value1) +
Convert.ToInt32(t2.Value2 == t.Value2) +
Convert.ToInt32(t2.Value3 == t.Value3) +
Convert.ToInt32(t2.Value4 == t.Value4)
: 0)
}).OrderByDescending(d => d.Coincidences).Select(d => d.Thing);