是否可以在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等。
答案 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)));
}