Linq , List und OrderBy()

14/05/2010 - 21:21 von Peter Haus | Report spam
Hallo

Ich bin mit Linq leider noch gar nicht vertraut und wundere mich
manchmal über das Ergebnis, bzw. nicht Ergebnis.


Hier mal der Code, unten die Frage.

List<InstandHaltung> _query;

var query0 = from CaterWareLibrary.Artikel a in _artikel
where a.instandhaltungInterval>0 &&
a.NextService >= DateTime.Now.Date orderby a.NextService
select new InstandHaltung
{
rowState = 0,
id=a.id,
NextService= a.NextService,
name=a.name,
details=a.details,
einheit=a.einheit,
inventur=a.inventur,
instandhaltungInterval=a.instandhaltungInterval,
InterVallText =
_InstandhaltungIntervallList[a.instandhaltungInterval].text
};

_query=query0.ToList<InstandHaltung>();


_query.OrderByDescending(a => a.NextService); // Typ DateTime

_query.OrderBy(a => a.NextService);


Wenn ich die beiden "OrderBy.." aufrufe, zeigt es keinerlei Auswirkung
auf die Liste.
Wieso wird diese nicht umsortiert?


Für Info Dankbar
Peter





private class InstandHaltung
{
public int id { get; set; }
public int rowState { get; set; }
public DateTime NextService { get; set; }
public string name { get; set; }
public string details { get; set; }
public string einheit { get; set; }
public int inventur { get; set; }
public int intervall { get; set; }
public int instandhaltungInterval { get; set; }
public string InterVallText { get; set; }

}
 

Lesen sie die antworten

#1 Carsten Posingies
14/05/2010 - 22:11 | Warnen spam
Hallo Peter,

OrderBy ist eine Func<..., ...>.

Und Code sagt mehr als 1000 Worte:

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

namespace ConsoleApplication1
{
class Program
{
static void Main()
{
var foo1 = new Foo(3, "Apfel");
var foo2 = new Foo(2, "Traube");
var foo3 = new Foo(1, "Birne");

var fooList1 = new List<Foo>();
fooList1.Add(foo1);
fooList1.Add(foo2);
fooList1.Add(foo3);

// Das ist wie "void 2 + 3".
fooList1.OrderBy(key => key.Id);

foreach (var foo in fooList1)
{
Console.WriteLine(String.Format("{0} {1}", foo.Id,
foo.Name));
}
Console.ReadLine();

// Das sortiert nach der Id.
var fooList2 = fooList1.OrderBy(key => key.Id);
foreach (var foo in fooList2)
{
Console.WriteLine(String.Format("{0} {1}", foo.Id,
foo.Name));
}
Console.ReadLine();

// Und das nach dem Namen.
var fooList3 = fooList1.OrderBy(val => val.Name);
foreach (var foo in fooList3)
{
Console.WriteLine(String.Format("{0} {1}", foo.Id,
foo.Name));
}
Console.ReadLine();
}
}

internal class Foo
{
internal int Id { get; set; }
internal string Name { get; set; }

internal Foo(int id, string name)
{
Id = id;
Name = name;
}
}
}

HTH =)

Carsten

Ähnliche fragen