按最常见的值排序我的记录列表,然后是下一个最常见的值

时间:2016-02-24 11:11:17

标签: c# linq sorting

对记录列表进行排序,以便首先显示具有最多共同值的记录。

I thought I found the solution in this link, but this only sorts by the first value.

我的未分类列表看起来像这样......

enter image description here

我希望我的排序列表看起来像这样......

enter image description here

基于以上链接我厌倦了守则......

   lp = lp.GroupBy(x => x.Name)
              .OrderByDescending(g => g.Count())
              .SelectMany(g => g).ToList();


    dataGridView2.DataSource = lp;

但正如所解释的那样,这只是按照第一个最常见的项目排序。

2 个答案:

答案 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);