我有一个场景,我必须根据某些条件按字段更改顺序。
from summaryRows in _summaryTable.AsEnumerable()
where summaryRows.Field<string>("AirlineDisplayName")
.Equals(airlineName_, StringComparison.OrdinalIgnoreCase)
orderby summaryRows.Field<decimal>("FareAdult")
select new
{
summaryTableRow = summaryRows
};
根据条件,我必须按字段更改为orderby summaryRows.Field<double>("BasePricePlusTaxAndFees")
这里,两种字段数据类型都不同。我怎么能在一个查询中做到这一点?
答案 0 :(得分:1)
我认为这将是最易读的,使用流畅的Linq语法并在构建查询时引入if语句。由于您没有解释您的条件,我假设您有一个名为condition的布尔变量,其值为:
var query = _summaryTable.AsEnumerable()
.Where(
summaryRows => summaryRows.Field<string>("AirlineDisplayName")
.Equals(airlineName_, StringComparison.OrdinalIgnoreCase));
if (condition)
query = query.OrderBy(summaryRows => summaryRows.Field<decimal>("FareAdult"));
else
query = query.OrderBy(summaryRows => summaryRows.Field<double>("BasePricePlusTaxAndFees"));
var resultQuery = query.Select(summaryRows => new
{
summaryTableRow = summaryRows
});
免责声明:我没有测试过,但祝你好运。
答案 1 :(得分:0)
这个怎么样:
orderby conditionIsTrue ? (IComparable)summaryRows.Field<double>("BasePricePlusTaxAndFees") : (IComparable)summaryRows.Field<decimal>("FareAdult")