Laden...

linq: List in List?

Erstellt von lord_fritte vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.029 Views
L
lord_fritte Themenstarter:in
553 Beiträge seit 2007
vor 13 Jahren
linq: List in List?

Hallo, ich habe ein Testprogramm:


class Program
  {
    static void Main(string[] args)
    {
      List<Obj> obj = new List<Obj>();

      Obj obj1 = new Obj();
      obj1.Name = "A";
      obj1.Str.Add("AA");
      obj1.Str.Add("AB");
      obj1.Str.Add("AC");
      obj1.Str.Add("AD");

      Obj obj2 = new Obj();
      obj2.Name = "B";
      obj2.Str.Add("BA");
      obj2.Str.Add("BB");
      obj2.Str.Add("BC");
      obj2.Str.Add("BD");

      Obj obj3 = new Obj();
      obj3.Name = "C";
      obj3.Str.Add("CA");
      obj3.Str.Add("CB");
      obj3.Str.Add("CC");
      obj3.Str.Add("CD");

      Obj obj4 = new Obj();
      obj4.Name = "D";
      obj4.Str.Add("DA");
      obj4.Str.Add("DB");
      obj4.Str.Add("DC");
      obj4.Str.Add("DD");

      obj.Add(obj1);
      obj.Add(obj2);
      obj.Add(obj3);
      obj.Add(obj4);
    }
  }

  class Obj
  {
    public string Name { get; set; }
    public List<string> Str { get; set; }
  }

Was ich jetzt möchte ist nach z.b. "CB" suchen und daraus das zugehörige Obj zu bekommen, in dem Fall das Object mit dem Namen C(obj4).

3.430 Beiträge seit 2007
vor 13 Jahren

Hallo lord_fritte,


var search = "CB";
var result = (from o in obj where o.Str.Contains(search) select o);

Sowas?

Irgendwie habe ich das Gefühl dass dein Beispiel sich selbst wiederspricht.
Es gibt da gar kein C(obj4)

Gruss
Michael

1.044 Beiträge seit 2008
vor 13 Jahren

Hallo lord_fritte,

das geht ganz normal. So wie du eine Abfrage auf eine Liste machst, machst du eine Abfrage in einer Liste, die in einer Liste ist.

zero_x

X
1.177 Beiträge seit 2006
vor 13 Jahren

huhu,

IEnumerable<Obj> result = obj.Where(o => o.Str.Contains("CB"));

😃

Xynratron

PS: mann, dass ist immer eine so hohe Response-Rate hier^^

Herr, schmeiss Hirn vom Himmel - Autsch!

Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.

L
lord_fritte Themenstarter:in
553 Beiträge seit 2007
vor 13 Jahren

Ja, danke, so geht es auch habe ich grad festgestellt:


var res = from o in obj
                from s in o.Str
                where s == "DC"
                select o;