Ich habe eine Methode, die ein Array von Zeichenfolgen als Parameter und Abfragen für eine Sammlung Eigenschaft, die auch eine Sammlung von Zeichenfolgen ist. Wenn für diese Eigenschaft einer der Werte innerhalb des Zeichenfolgenarrays als Parameter übergeben wird, sollte sie zurückgegeben werden.Linq Abfrage gegen eine Sammlung Eigenschaft mit einer Sammlung Parameter
Hier ist mein Code:
public IEnumerable<BlogPost> GetAll(string[] tags,
bool includeUnapprovedEntries = false) {
foreach (var tag in tags) {
foreach (var blogPost in GetAll(includeUnapprovedEntries).
ToList().Where(x => x.Tags.Any(t => t == tag))) {
yield return blogPost;
}
}
}
Hinweis:
Dies ist die komplette Code:
Dies macht den Job, aber es doesn nur‘ t scheinen richtig. Ich hätte das mit einigen Erweiterungsmethoden besser machen können, aber ich konnte nicht herausfinden, was das tun würde, und diese Implementierung richtig machen.
Irgendeine Idee?
Ah, ich fühle mich jetzt so schlecht. Ich schätze, ich sollte nach 1 Uhr morgens nicht mehr programmieren. Vielen Dank! – tugberk
@tugberk: Haben Sie überprüft, dass es tatsächlich funktioniert * obwohl? Nimm es nicht an, bis du es ausprobiert hast :) Ich kann ziemlich gut vorhersagen, wie sich LINQ zu Objects verhalten wird, aber ich habe sehr wenig Erfahrung (im Wesentlichen Null) mit dem Entity Framework. –
Auch sollte ich erwähnen, dass diese Abfrage wirklich nicht zu SQL Server geht. Ich habe eine Tag-Sammlung über Semikolon-getrennte Zeichenfolge erstellt (wie hier: https://github.com/tugberkugurlu/MvcBloggy/blob/master/src/MvcBloggy.Data/DataAccess/SqlServer/Model/BlogPost.cs). Also, es bekommt die ganzen Daten mit 'GetAll' (ja, es ist ein wirklich schlechter Ansatz, aber ich konnte nicht anders herum herausfinden) und macht die Abfrage dagegen. So ist es meistens Linq zu Objetcs. – tugberk