C# Linq -根据Queryresult返回不同的对象(if/else)

uqjltbpv  于 2022-12-06  发布在  C#
关注(0)|答案(2)|浏览(143)

我有一个List,我在某些条件下查询一些数据,它返回OKObject,而在其他条件下返回NotSoGoodObject。我想知道如何用Linq实现这一点。
基本上:

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查询来完成上述任务?

ffx8fchx

ffx8fchx1#

唯一可能的方法是,如果您有一个类,例如NumbersGoodEnough,并且它的一个属性是用linq查询设置的
但这只会让你的代码看起来更干净
或者简单地尝试使用一个方法将所有代码放入,这将是我的首选

gwo2fgha

gwo2fgha2#

我会尝试一些沿着的方法:

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.

相关问题