2011-01-09 20 views
2

Ich habe meine Nachricht mit expliziter Frage rephased.Vergleichen Sie zwei verschiedene Listen

Ich habe zwei verschiedene Liste.

List<Car> car = GetCars(); 
List<int> carListNumber = new List<int> { 1, 2, 3}; 

public Car 
{ 
    public int number 
    public string color 
    public string brand 
} 

Meine Anfrage ist eine neue Auto-Liste zu erreichen, die 1,2,3-Nummer enthalten soll, basierend auf LinQ Codierung?

Um dieses spezifische Auto zu erhalten, müssen Sie die richtige Autonummer von carListNumber erhalten.

+1

Wie bestimmen Sie, welche Autos/Nummern Sie möchten? – Oded

+0

Ich mache diese Version einfacher für Endbenutzer und ich werde einige complementory den Rest machen ... Wenn das Problem auftreten, werde ich nicht Geist eine andere Frage hinzufügen müssen. –

Antwort

0

Need 1 eine Liste der Zahl haben, 2 und 3 von der Nummer Car basiert auf LinQ oder ähnlich.

Wie soll ich mit anderen Kontext zwei andere Liste zu vergleichen?

Also wollen Sie ein Auto von der Liste nehmen, sagen BMW, und finden Sie heraus, es ist Nummer?

Ich habe wirklich Mühe zu verstehen, was Sie tun möchten. Sie können eine Liste mit einem Index adressieren. Wird das helfen?

EDIT aus dem unten:

schließlich verstanden, was Sie tun möchten. Möchten Sie die Reihenfolge der Autos oder die Reihenfolge der Nummern? Wenn Sie BMW2, Audi1 haben, möchten Sie, dass die Nummernfolge 2, 1 oder die Fahrzeugbestellung Audi, BMW ist. Dann werde ich mit dem Code helfen :)

List<Car> car1 = GetCars1(); 
int number = car1.IndexOf(//car//); 

Wenn Sie weitere Hilfe benötigen, können Sie bitte wieder erläutern Sie Ihre Frage, und auch, könnten Sie bitte tun uns einen großen Gefallen, und Zeichen/up-Abstimmung passende Antworten in Ihren vorherigen Fragen.

Vielen Dank!

+0

Ich habe meine Nachricht expliziter formuliert. Bitte informieren Sie mich, wenn Änderungen notwendig sind. Mit freundlichen Grüßen, Fullmetalboy –

0

Um eine Liste < int> der Autos Nummern aus der Liste < Auto> versuchen Sie folgendes:

var listOfCarNumbers = car1.Select(car=>car.number).ToList(); 
var listsMatches = listOfCarNumbers.TrueForAll(carListNumber.Contains) && listOfCarNumbers.TrueForAll(carListNumber.Contains); 

ListsMatches enthält dann einen Booleschen Wert, wenn der 2 übereinstimmen.

0
bool listsAreTheSame(List<Car> cars, List<int> numbers){ 
    if(cars.Count() != numbers.Count()) 
    return false; 
    for(int i = 0; i < cars.Count(); i++){ 
    if(cars[i].number != numbers[i]) 
     return false; 
    } 
    return true; 
} 
+0

sollten Sie in LINQ suchen - dies kann in einer wesentlich prägnanteren Weise mit einigen LINQ-Erweiterungsmethoden durchgeführt werden. –

+0

Ich weiß, dass mein LINQ gut, aber ich habe gerade aufgewacht, so war dies alles, was ich mit meinem Fuzzy-Denken im Moment zusammen könnte :-) – Axarydax

5
carListNumber.SequenceEquals(car1.Select(car=>car.number)); 
+0

Linq eine gute Möglichkeit, von dinge in einer Linie ist, was andere in 12 tun können :) Gute Lösung –