LINQ to SQL值在两个双精度值之间

0s7z1bwu  于 2023-09-28  发布在  其他
关注(0)|答案(3)|浏览(123)

我使用LINQ to SQL查询我的数据库,我有一个非常类似的查询:

var result = from db.MyTable.Where(d => (double)d.Price >= minValue)

我需要where子句包含d.Proce >= minValued.Price =< maxValue(类似于T-SQL BETWEEN子句)。
我该怎么做?

efzxgjgh

efzxgjgh1#

不如这样吧:

var result = from db.MyTable.Where(d => (double)d.Price >= minValue 
                                         && (double)d.Price <= maxValue)
1zmg4dgp

1zmg4dgp2#

只是为了完整性;如果你基于不同的输入构建一个查询,你可以用连续的Where调用来组合它:

IQueryable<SomeType> query = db.MyTable;
if(minValue != null) // a Nullable<double>
{
    var actualMin = minValue.Value;
    query = query.Where(d => (double) d.Price >= actualMin);
}
if(maxValue != null) // a Nullable<double>
{
    var actualMax = maxValue.Value;
    query = query.Where(d => (double) d.Price <= actualMax);
}
// keep working with "query", for example, query.ToList();
jc3wubiy

jc3wubiy3#

通过引入INumber接口,您可以创建一个适用于大多数数值类型的简单抽象:

static bool Between<T>(T value, T min, T max) where T : INumber<T>
{
      return value >= min && value <= max;
}

它会看起来更干净,更清晰海事组织

var result = from db.MyTable.Where(Between(d.Price, minValue, maxValue))

相关问题