2017-06-30 5 views
-2

Ich habe eine Frage bezüglich IQueryable.Wählen Sie keine bestimmten Elemente in IQueryable

Wie kann ich ein Element in IQueryable entfernen/nicht auswählen.

Mein Code gibt ein IQueryable mit einer Liste von Entitäten wie diesen zurück.

{ 
"ResourceId": "FirstName", 
"LanguageId": "ENG", 
"Client": NULL, 
"ResourceText": "first name x" 
} 
{ 
"ResourceId": "FirstName", 
"LanguageId": "ENG", 
"Client": 1, 
"ResourceText": "first name y" 
} 
{ 
"ResourceId": "LastName", 
"LanguageId": "ENG", 
"Client": NULL, 
"ResourceText": "last name" 
} 
{ 
"ResourceId": "BirthDate" 
"LanguageId": "ENG" 
"Client": NULL 
"ResourceText": "date of birth" 
} 

Wenn es ein Unternehmen mit einem bestimmten Client vorhanden ist (nicht null) für die gleiche ResourceId ich die Einheit mit dem Kunden == null

Für das obige Beispiel entfernen will, sollte das Ergebnis sein

{ 
"ResourceId": "FirstName", 
"LanguageId": "ENG", 
"Client": 1, 
"ResourceText": "first name y" 
} 
{ 
"ResourceId": "LastName", 
"LanguageId": "ENG", 
"Client": NULL, 
"ResourceText": "last name" 
} 
{ 
"ResourceId": "BirthDate" 
"LanguageId": "ENG" 
"Client": NULL 
"ResourceText": "date of birth" 
} 

thx für Ihre Hilfe

+0

die Frage ist nicht klar genug, meinst du, dass Sie dies in einer In-Memory-Liste haben, und Sie wollen eine Linq-Abfrage darüber machen? –

Antwort

1
var result = clients.Where(c => c.Client == null); 

Wo clients ist die IQueryable Einheiten

0

Ich würde das so tun:

haben wir Liste der Kunden clients. Zuerst wollen wir alle ResourceID ‚s bekommen, wo Client nicht null ist:

var notNullClients = from c in clients where c.Client != null 
        select c.ResourceID; 

Dann filtern Sie einfach Ihre Reihe von clints mit where Klausel wie folgt:

var Clients = from c in clients 
       where ((c.Client == null & !notNullClients.Contains(c.ResourceID)) | 
        (c.Client != null & notNullClients.Contains(c.ResourceID))) 
       select c; 

Zuerst wollen wir Kunden nehmen mit Client Feld gleich null nur wenn es keine solche ResourceID, für die wir haben Client nicht null. Dann nehmen wir den Rest "Nicht-Null-Kunden".

Verwandte Themen