Ich versuche, einen Linq-Ausdruck zu verwenden, um eine Liste in einer generischen Methode zu filtern, und kann es nicht richtig bekommen. HierWie kann ich einen Linq-Ausdruck enthalten, um eine Liste von generischen Elementen zu überprüfen
ist, wie es aussieht:
der Anruf:
Expression<Func<SomeObject, object>> screen = i => i.BooleanFlag == false;
SomeObjectList.Build<SomeObject>(
screen,
NonBuiltListOfTypeSomeObject);
}
die Methode:
public void Build<T>(
Expression<Func<T,object>> screen,
List<T> items) where T : class
{
this.Values = items.Select(f => new ModelForBuild()
{
//Build Parameters
}).ToList();
}
Was ich versuche, um die Elemente zu tun Bildschirm ist, bevor sie in gebaut werden this.Values
. Ich übergebe den Linq-Ausdruck, der versucht, den Zugriff basierend auf der booleschen Eigenschaft in SomeObject
zu verweigern. Allerdings sagt der Compiler mir, dass ich nicht
this.Values = items.Where(screen).Select(f => new ModelForBuild()...
Ich habe versucht, verschiedene Möglichkeiten, so vielleicht gibt es einen besseren Weg, dies zu tun, wenn ja, was auf diese Weise ist OR wie kann ich effektiv die Linq-Ausdruck enthalten um die Liste der Artikel zu screenen?
EDIT
Fehlermeldung aus .Where (Bildschirm)
Error 1 Instance argument: cannot convert from 'System.Collections.Generic.List<T>' to 'System.Linq.IQueryable<T>'
Error 2 'System.Collections.Generic.List<T>' does not contain a definition for 'Where' and the best extension method overload 'System.Linq.Queryable.Where<TSource>(System.Linq.IQueryable<TSource>, System.Linq.Expressions.Expression<System.Func<TSource,bool>>)' has some invalid arguments
Error 24 Argument 2: cannot convert from 'System.Linq.Expressions.Expression<System.Func<T,object>>' to 'System.Linq.Expressions.Expression<System.Func<T,bool>>'
Sie geben ein Objekt anstelle eines booleschen Werts zurück. Ändern Sie 'Func' zu 'Func ' oder 'Prädikat '. –
@ AS-CII - keiner von denen arbeitete. –
Verwenden Sie Linq zu Objects oder eines von Linq zu Sql/Entities? – Phil