2016-04-09 5 views
0

ich eine Liste in dieser Tabelle habenDie am häufigsten auftretende Element in einer Liste

public class Fruits 
    { 

     public int ID { get; set; } 

     public string Name{ get; set; } 
} 

Ich möchte wissen, was die häufigste Frucht in dieser Tabelle sind, was der Code ist, dass dieses Ergebnis ich mir erscheint bin Gebrauch

var max = db.Fruits.Max(); 

Es gibt einen Fehler in diesem?

+1

@DrewKennedy Sie sollten eher eine Antwort als einen Kommentar erstellen, weil Sie die richtige Antwort haben. – gretro

+0

Wenn es Apfel Apfel Apfel Apfel Apfel orange orange Lemon Ich möchte mich sagen, etwas Sultan

+0

@gretro Mein schlecht. Hätte nicht gedacht, dass ich Zeit für eine Antwort hätte. –

Antwort

0

public class Fruits 
    { 

     public int ID { get; set; } 

     public string Name{ get; set; } 
} 


var Val = fruitList.GroupBy(x => x.ID, 
         (key, y) => y.MaxBy(x => x.ID).value) 
0

versuchen, so Drew in den Kommentaren gesagt, Sie auf dem Wert GROUPBY möchten, die Ihnen wichtig sind (I Name tat, da ID neigt dazu, in den meisten Datenstrukturen eindeutig zu sein) und dann OrderByDescending Based auf der Rechnung.

using System; 
using System.Collections.Generic; 
using System.Linq; 

public class Program 
{ 
    public static void Main() 
    { 
     var fruits = new List<Fruit> { new Fruit { ID = 1, Name = "Apple" }, new Fruit { ID = 2, Name = "Apple" }, new Fruit { ID = 3, Name = "Pear" } }; 
     var most = fruits.GroupBy(f => f.Name).OrderByDescending(group => group.Count()); 
     Console.WriteLine(most.First().Key); 
    } 
} 

public class Fruit 
{ 
    public int ID { get; set; } 
    public string Name{ get; set; } 
} 
+0

In diesem Fall wusste ich, was in der Tabelle war, und wenn Sie nicht wissen, ist es ein Apfel oder eine Banane Ich möchte wissen, was am häufigsten ist – Sultan

+0

@ سلطاناليامي - Unsicher, was Sie meinen. Dies wird Ihnen sagen können, wonach Sie fragen, ohne dass Sie wissen, was es ist. Der einzige Grund, warum Sie es hier sehen können, ist, dass ich Testdaten anzeigen musste. – JasCav

1

Wenn Sie den Namen des Elements erhalten möchten, dass die meisten in der Liste vorhanden ist, zuerst die ID finden, dass die meisten auftritt:

var fruitAnon = fruits 
     .GroupBy(item => item.ID) 
     .Select(item => new { 
      Key = item.Key, 
      Count = item.Count() 
     }) 
     .OrderByDescending(item => item.Count) 
     .FirstOrDefault(); 

Dies wird ein anonymes Objekt zurück, das die haben häufigste id, und die count stellt die Anzahl dar, wie oft es in der Liste existiert. Anschließend können Sie dieses Objekt Namen finden:

var fruit = fruits.FirstOrDefault(x => x.ID == fruitAnon.Key); 

Wenn Sie eine Liste wie folgt haben:

List<Fruits> fruits = new List<Fruits>() { 
    new Fruits { ID = 1, Name = "Apple" }, 
    new Fruits { ID = 1, Name = "Apple" }, 
    new Fruits { ID = 2, Name = "Orange" }, 
    new Fruits { ID = 2, Name = "Orange" }, 
    new Fruits { ID = 2, Name = "Orange" }, 
    new Fruits { ID = 2, Name = "Orange" } 
}; 

Dann:

Console.WriteLine(fruit.Name); 

Orange drucken.

Verwandte Themen