2017-01-17 12 views
0

C#で何らかの並べ替えクエリとして組み合わされたLinqクエリを実行することは可能ですか?C#とLinqの組み合わせでLinqクエリを組み合わせた場合

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; 
} 

は、だから私は一度別の組み合わせを照会することができますし、個別にすべての組み合わせをコーディングする必要はありません。

は、例えば、私は3つの方法を持っていますか?

コレクションにソートフィルタを作成したいので、パラメータAを取得すると、コレクションからAの結果が得られます。私はBを追加するとAとBが欲しく、AがBならばBのみが欲しい。

+7

場合は、この質問を言い換えることができますしてください?それは私には意味がありません。 – sdgfsdh

+1

これらの3つの方法はすべて同じです。メソッド、パラメータ、およびlambda引数には、それぞれ異なる名前を使用するだけです。 – juharr

答えて

1

私はあなたの質問を正しく理解しているので、答えはYesです。 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))); 
} 

またはあなたが必要とOR演算子

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))); 
    }