如何在具有if-else条件的c#linq中使用按内部select语句排序
我需要按条件在上述到期日前订购 条件:如果其升序到期日应由asc指定 否则下降 每个记录的截止日期将不同如何在具有if-else条件的c#linq中使用按内部select语句排序,c#,linq,C#,Linq,我需要按条件在上述到期日前订购 条件:如果其升序到期日应由asc指定 否则下降 每个记录的截止日期将不同 查询时需要检查条件这似乎可以做到: select new { DueDate = dd.DueDate, DateType = dd.DateType, Quantity = dd.Quantity, } 我想你想要的是: bool myCondition = // false/true; var myList = myInput.Select new {
查询时需要检查条件这似乎可以做到:
select new
{
DueDate = dd.DueDate,
DateType = dd.DateType,
Quantity = dd.Quantity,
}
我想你想要的是:
bool myCondition = // false/true;
var myList = myInput.Select new
{
DueDate = dd.DueDate,
DateType = dd.DateType,
Quantity = dd.Quantity,
};
var result = (myCondition ?
myList.OrderBy(x => x.DueDate) :
myList.OrderByDescending(x => x.DueDate)
).Select(x => new { DueDate = x.DueDate });
日期必须在
new{…}
块之外声明。但是,如果每个项目的日期都发生了变化,那么我建议使用一个简单的for循环来完成这项工作。完全不清楚您想做什么。如果满足条件,是否要订购?或者支票该怎么办?无论如何,请展示您迄今为止所做的尝试。您正在寻找OrderBy
<代码>选择(dd=>new{DueDate=dd.DueDate,…}).OrderBy(item=>item.DueDate)是的,你是对的。需要根据条件进行排序,以及当条件未通过时应该发生什么?它应该按下降顺序排序感谢响应,我已经尝试过了。这是我们查询后的订单。。我需要在查询时按顺序显示您的查询。不清楚您是如何进行实际查询的。请选择new DemandLine{DueDate=dd.DueDate,ObjSubParentProductFamily=new SubParentProductFamily{SubParentProductFamilyId=v.SubParentProductFamilyId},UnitPrice=Convert.ToDecimal(14.50),}在这里,我需要在截止日期前订购,具体取决于条件。请将其放入您的问题中,以便每个人都能看到。来吧,分享你的负担,我们不是来猜你想要实现什么的。我已经根据你的问题编辑了我的答案。请注意,由于linq延迟执行,查询只执行一次,尽管order语句不在同一行中。
items.Select (item => new
{
x = item.y == cond ? item.y : Sort(item.y);
// if item.y == condition, then item.y ELSE Sort item.y
...
}
);