C#Linq-根据查询结果返回不同的对象(if/else)



我有一个List,我在某些条件下查询一些数据,它返回OKObject,在其他条件下返回NotSoGoodObject。我想知道如何才能和林克一起做到这一点。

基本上:

var myList = context.Orders......ToList();
object obj=null;
if(myList.All(x=>x.myenum==1)){
obj=OKObject {....};
}
else if(myList.Any(x=>x.myenum==-1)){
obj=NotSoGoodObject{....} ;
}
}else{
//No idea yet
}

我必须再做大约10个枚举。

有没有一种方法可以用一个Linq查询完成上述操作?

唯一可能的方法是,如果您有一个class,例如NumbersGoodEnough,并且它的一个属性是用linq查询设置的

但这只会让你的代码在这里看起来更干净

或者简单地尝试使用一种方法将所有代码放入,这将是我的第一选择

我会尝试一些类似的方法

public List<object> GetDataObject(int enumInt) {
var myList = context.Orders......ToList();
return myList.Where(x => x.myenum == enumInt).ToList();
}

不过,我不建议使用object。

编辑:

根据您的意见,您可以尝试:

var myList = context.Orders......ToList();
var notSoGoodObjects = myList.Where(x => x.myenum == -1 || x.myenum == anotherBadEnum || ...).ToList();
var okObjects = myList.Where(x => x.myenum == 1 || x.myenum == anotherGoodEnum || ...).ToList();
//If you have other objects you can use LINQ's `.Where()` method to only filter those results.

最新更新