2017-01-17 19 views
0

是否有可能在c#中執行組合的Linq查詢作爲某種查詢?C#和Linq啓動組合的Linq查詢

比如我有3種方法:

private queueCollection; 

private void testA(parameterA) 
{ 
    if(parameterA != null) 
    { 
     queueCollection.Add(someCollection.Where(a => a.Name = parameterA)) 
    } 
    else 
    { 
     queueCollection.Add(someCollection); 
    } 
} 

private void testB(parameterB) 
{ 
    if(parameterB != null) 
    { 
     queueCollection.Add(someCollection.Where(b => b.Name = parameterB)) 
    } 
    else 
    { 
     queueCollection.Add(someCollection); 
    } 
} 

private void testC(parameterC) 
{ 
    if(parameterC != null) 
    { 
     queueCollection.Add(someCollection.Where(c => c.Name = parameterC)) 
    } 
    else 
    { 
     queueCollection.Add(someCollection); 
    } 
} 

public void linqQueue() 
{ 
    start queueCollection; 
} 

所以我可以在一次查詢不同的組合,並不需要每個組合單獨代碼?

我想在集合上創建一個排序過濾器,所以如果我得到參數A,我會從集合中得到A結果;如果我添加B,我想要A和B,如果我得到A null,我只想要B等。

+7

請你能改寫這個問題?這對我沒有意義。 – sdgfsdh

+1

這三種方法都是相同的。它們只爲方法,參數和lambda參數使用不同的名稱。 – juharr

回答

1

正如我正確理解您的問題,答案是肯定的,您可以。您可以在Linq查詢中使用謂詞。

0
private void test(parameterA,parameterB,parameterC) 
{ 
    queueCollection.Add(someCollection.Where(a => (parameterA != null && a.Name = parameterA) && (parameterB != null && a.Name = parameterB) && (parameterC != null && a.Name = parameterC))); 
} 

,或者如果你需要或者運營商

private void test(parameterA,parameterB,parameterC) 
    { 
     queueCollection.Add(someCollection.Where(a => (parameterA != null && a.Name = parameterA) || (parameterB != null && a.Name = parameterB) || (parameterC != null && a.Name = parameterC))); 
    }