C#和Linq联合推出了Linq查询

时间:2017-01-17 13:18:09

标签: c# linq

是否可以在c#中执行组合的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等。

2 个答案:

答案 0 :(得分:1)

正如我正确理解你的问题,答案是肯定的,你可以。您可以在Linq查询中使用谓词。

答案 1 :(得分: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)));
    }