2010-12-31 6 views
2

ich eine Liste haben, Awie Sie Situation wie IF in Linq tun?

List<int> A = new List<int>() {1,2,3,4,5}; 

ich auch eine Bool Variable S haben. Ich möchte A in eine andere Liste kopieren, die LINQ verwendet, mit einer Bedingung: wenn S falsch ist, dann kopiere den negativen Wert jedes Elements in A (zB {-1, -2 ..}), sonst wird es dasselbe sein, wie { 1,2 ..}

+0

Bitte umformulieren Sie Ihre Frage, ich kann keinen Sinn wie es ist. – BoltClock

Antwort

8

Wenn ich Ihre Frage richtig verstanden habe, dann ist das in der Tat möglich:

var B = (from item in A 
     select S ? item : -item).ToList(); 

Oder mit einem lambda expression:

var B = A.Select(item => S ? item : -item).ToList(); 

Sie können sogar tun, ohne die ternary conditional operator mit :

var B = A.Select(item => { 
    if (S) { 
     return item; 
    } else { 
     return -item; 
    } 
}).ToList(); 
+0

+1 für die Erwähnung einer Alternative ohne den bedingten Operator. –

2

Durch den ternären ?: Operator

Verwendung
A.Select(a=>s?a:-a).ToList() 

es bedeutet, dass es für jedes Element a in A, wird den Wert mit a wenn s wahr ist, ein Element zu der Liste hinzufügen und -a wenn nicht

Verwandte Themen