2016-04-13 11 views
4

Ich versuche zu sehen, ob meine Quellensammlung Werte enthält, die nur aus einer 2. Sammlung stammen können.Wie überprüft man, ob eine Sammlung nur Elemente aus einer anderen Sammlung enthält?

Zum Beispiel.

Valid data collection: 1, 2, 5 

Source Collection | Result 
----------------------------------------- 
<empty>   | true 
1     | true 
1, 2    | true 
1, 2, 5   | true 
1, 5    | true 
3     | false (3 is illegal) 
1, 3    | false (3 is illegal) 
1, 2, 555   | false (555 is illegal) 

So ist es wie .. wenn meine Quelle Sammlung einige Werte hat .. dann können die Werte nur existieren, wenn sie in der anderen Sammlung enthalten sind.

Urgh. zu erklären schwer :(

Antwort

7

So etwas wie

var allInCollection = src.All(x => valid.Contains(x)); 

Oder wenn Sie einen Loop-basierter Ansatz bevorzugen:

bool result = true; 
foreach(var e in src) 
{ 
    if (!valid.Contains(e)) result = false; 
} 
4

könnten Sie verwenden LINQExcept, wenn eine des Elements in der Sammlung Um zu überprüfen, ist nicht in der anderen Sammlung

Zum Beispiel:

var a = new List<int>() {1,2,5}; 
var b = new List<int>() {1,3}; 
var c = b.Except(a); 
if (c.Any()){ //then it is wrong, some items of b is not in a 
} 
1

Dies sollte es tun:

sourceCollection.All(num => validDataCollection.Contains(num)) 
+1

Versuchen Sie den Code beim nächsten Mal zu formatieren, ich es für Sie diesmal tat. – Mafii

Verwandte Themen