C# 根据条件更改“订单依据”字段

C# 根据条件更改“订单依据”字段,c#,linq,linq-to-sql,lambda,C#,Linq,Linq To Sql,Lambda,我有一个场景,在这个场景中,我必须根据某些条件更改order by字段 from summaryRows in _summaryTable.AsEnumerable() where summaryRows.Field<string>("AirlineDisplayName") .Equals(airlineName_, StringComparison.OrdinalIgnoreCase) orderby summaryRows.Field<

我有一个场景,在这个场景中,我必须根据某些条件更改order by字段

from summaryRows in _summaryTable.AsEnumerable()
where summaryRows.Field<string>("AirlineDisplayName")
                 .Equals(airlineName_, StringComparison.OrdinalIgnoreCase) 
orderby summaryRows.Field<decimal>("FareAdult")
select new
{
    summaryTableRow = summaryRows
};
来自_summaryTable.AsEnumerable()中的summaryRows
其中summaryRows.Field(“AirlineDisplayName”)
.Equals(airlineName_u2;、StringComparison.OrdinalIgnoreCase)
orderby summaryRows.Field(“FareManual”)
选择新的
{
summaryTableRow=summaryRows
};
根据条件,我必须将order by字段更改为orderby summaryRows.field(“BasePricePlusTaxAndFees”) 这里,两种字段数据类型都不同。如何在一个查询中完成此操作?

这是什么:

orderby conditionIsTrue ? (IComparable)summaryRows.Field<double>("BasePricePlusTaxAndFees") : (IComparable)summaryRows.Field<decimal>("FareAdult")
orderby条件是否正确?(IComparable)summaryRows.Field(“BasePricePlusTaxAndFees”):(IComparable)summaryRows.Field(“Fare”)
这个怎么办:

orderby conditionIsTrue ? (IComparable)summaryRows.Field<double>("BasePricePlusTaxAndFees") : (IComparable)summaryRows.Field<decimal>("FareAdult")
orderby条件是否正确?(IComparable)summaryRows.Field(“BasePricePlusTaxAndFees”):(IComparable)summaryRows.Field(“Fare”)

我认为,使用流畅的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
    });
var query=\u summaryTable.AsEnumerable()
.在哪里(
summaryRows=>summaryRows.Field(“AirlineDisplayName”)
.Equals(airlineName,StringComparison.OrdinalIgnoreCase));
如果(条件)
query=query.OrderBy(summaryRows=>summaryRows.Field(“Fare成人”);
其他的
query=query.OrderBy(summaryRows=>summaryRows.Field(“BasePricePlusTaxAndFees”);
var resultQuery=query.Select(summaryRows=>new
{
summaryTableRow=summaryRows
});

免责声明:我没有测试过它,但祝你好运。

我认为使用流畅的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
    });
var query=\u summaryTable.AsEnumerable()
.在哪里(
summaryRows=>summaryRows.Field(“AirlineDisplayName”)
.Equals(airlineName,StringComparison.OrdinalIgnoreCase));
如果(条件)
query=query.OrderBy(summaryRows=>summaryRows.Field(“Fare成人”);
其他的
query=query.OrderBy(summaryRows=>summaryRows.Field(“BasePricePlusTaxAndFees”);
var resultQuery=query.Select(summaryRows=>new
{
summaryTableRow=summaryRows
});

免责声明:我没有测试它,但祝你好运。

不过有一个问题,你可能需要在最后为投影声明一个单独的变量
query
has是可枚举的
DataRow
到排序。投影将该类型更改为匿名类型的可枚举类型。但有一个问题,您可能需要在最后为投影声明一个单独的变量
query
has是可枚举的
DataRow
到排序。投影将该类型更改为匿名类型的可枚举类型。