LINQ: Verwenden .Außer (), die auf Sammlungen von verschiedenen Arten, indem Sie diese Cabrio/vergleichbar?

Gegeben sind zwei Listen von verschiedenen Arten, ist es möglich, diese Arten Cabrio oder zwischen miteinander vergleichbar (z.B. mit einem TypeConverter oder ähnliches), so dass eine LINQ-Abfrage können Sie vergleichen? Ich habe gesehen, ähnliche Fragen auf, SO aber nichts, die Punkte zu machen, die Typen-Cabrio zwischen einander, um das problem zu lösen.

Collection-Typen:

public class Data
{
    public int ID { get; set; }
}

public class ViewModel
{
    private Data _data;

    public ViewModel(Data data)
    {
        _data = data;
    }
}

Gewünschte Verwendung:

    public void DoMerge(ObservableCollection<ViewModel> destination, IEnumerable<Data> data)
    {
        //1. Find items in data that don't already exist in destination
        var newData = destination.Except(data);

        //...
    }

Würde es logisch erscheinen, da ich weiß, wie zu vergleichen, die eine Instanz von ViewModel zu einer Instanz von Daten sollte ich in der Lage, einige Vergleich-Logik, LINQ würde dann verwenden Sie für Anfragen wie .Mit Ausnahme von(). Ist das möglich?

Der Arme alte for Schleife, er war einmal so nützlich, aber, ach, er macht nie den one-liner die Menschen glücklich.
Ich bin nicht einverstanden mit der Stimmung, die Sie Ausdrücken. Wir haben Möglichkeiten, code zu schreiben, dass jetzt deutlicher drückt sich die Absicht, ohne sich Gedanken über den Mechanismus. for drückt Mechanismen und verdunkelt Absicht. Die LINQ-basierte one-Liner, Sie sind decrying oft (ja, nicht immer) besser ausdrücklichen Absicht und ausblenden Mechanismen. Dies führt zu code, der leichter zu verstehen und zu pflegen.
während ich die Aufgabe, alle Funktionen, die Sie werfen in einer Projektion, wie Sie sind, stellt nur eine Annahme von Vorsatz.
Ich nicht Folgen.
Was ist Los mit dir? LINQ ist cool und macht überall gelten. 😉

InformationsquelleAutor James Cadd | 2012-04-03

Schreibe einen Kommentar