我目前正在使用linq语句根据条件将项目从一个列表移动到另一个列表,但我需要添加第二个条件,我认为我有语法问题
我目前正在做的事情:
var selected = Generatorlist.CallDataGeneratorsDone
.Where(item => item.SkillNumber == SkillNumber)
.ToList();
Generatorlist.CallDataGeneratorsDone = Generatorlist.CallDataGeneratorsDone
.Except(selected)
.ToList();
Generatorlist.CallDataGeneratorsNotDone.AddRange(selected);
我想做的事情:
var selected = Generatorlist.CallDataGeneratorsDone
.Where((item => item.SkillNumber) & (item => item.CallServer))
.ToList();
Generatorlist.CallDataGeneratorsDone = Generatorlist.CallDataGeneratorsDone
.Except(selected)
.ToList();
Generatorlist.CallDataGeneratorsNotDone.AddRange(selected);
我遇到了问题,因为你不能和我们联系。在Lambda表达式中。我正在寻找一些帮助来找到实现这一目标的方法。
答案 0 :(得分:1)
您只需要删除item =>
的第二个声明(它只需要定义一次):
var selected = Generatorlist.CallDataGeneratorsDone
.Where(item => item.SkillNumber && item.CallServer)
.ToList();
答案 1 :(得分:0)
您可以像这样链接Where调用...
var selected = Generatorlist.CallDataGeneratorsDone
.Where(item => item.SkillNumber)
.Where(item => item.CallServer)
.ToList();
答案 2 :(得分:0)
如果我没有遗漏某些内容,那么在同一个表达式中应该&&
而不是&
:
var selected = Generatorlist.CallDataGeneratorsDone
.Where(item => item.SkillNumber && item.CallServer)
.ToList();
这假设SkillNumber
和item.CallServer
都是布尔值。否则,您需要编写完整的谓词,如item.SkillNumber = 'blah blah'
。
答案 3 :(得分:0)
您案例中的解决方案是:
Generatorlist.CallDataGeneratorsNotDone
.AddRange(Generatorlist.CallDataGeneratorsDone
.Except(Generatorlist.CallDataGeneratorsDone
.Where(item => item.SkillNumber && item.CallServer))
.ToList())