2016-06-04 23 views
0

ich den nächsten Code haben:Nehmen IQueryable Bezug auf ein anderes Objekt

var list1 = server1Products; // server1Products is List<Product> type 
var list2 = server2Products; // server2Products is List<Product> type 
// 
// get a queryable reference from first variable (list1) 
var query = list1.AsQueryable(); 
// 
// apply any filter 
query = query.Where(p => p.Active == true); 
// 
// get result from first list server1Products 
var result1 = query.ToList(); 

Ich brauche die SAME "Abfrage" reference auf die Variable "list2" anzuwenden.

var result2 = ??????????????; // result from server2Products list 

Es ist möglich?

+0

Sie meinen 'result2 = query.Where (somethingselse)'? – DavidG

+0

Lass uns die Dinge zuerst klarstellen. Warum verwenden Sie '.AsQueryable()'? –

+0

Hallo @GertArnold ... Ich vereinfachte die Angelegenheit, das ist ein bisschen komplexer. Ich muss einen komplexen LINQ-Ausdruck erstellen und auf viele Listen anwenden. – JaimeCamargo

Antwort

1

Wenn ich Sie richtig verstehe, möchten Sie den gleichen Filter auf eine andere Liste anwenden, so dass Sie nur aktive Produkte aus der Liste2 erhalten. Sie können es auf diese Weise machen:

Expression<Func<Product, bool>> expr = p => p.Active; 
var result1 = list1.AsQueryable().Where(expr); 
var result2 = list2.AsQueryable().Where(expr); 

Aufruf der AsQueryable() Methode hier als andere Art und Weise C# korrekt ist die richtige Methode nicht korrekt auflösen.

+1

Sie können auch ein 'Func ' ohne 'AsQueryable()' verwenden. Ich vermute, dass das OP erwartet, dass durch die Verwendung von 'AsQueryable()' etwas passiert, aber sie reagieren nicht. –

+0

Ja, du hast Recht. Die Verwendung eines solchen Ansatzes, den ich gefunden habe, besteht darin, Einheitentests für Filter durchzuführen. Wenn Sie eine Reihe von Filtern haben, die Ausdrücke zur weiteren Verwendung mit ORM zurückgeben und Sie sie testen müssen, können Sie dies nicht tun, ohne die AsQueryable-Methode für Ihre Testlisten aufzurufen. Ich kenne keine anderen Orte, an denen diese Methode angebracht wäre. –

Verwandte Themen