我使用LINQ to SQL查询我的数据库,我有一个非常类似的查询:
var result = from db.MyTable.Where(d => (double)d.Price >= minValue)
我需要where子句包含d.Proce >= minValue和d.Price =< maxValue(类似于T-SQL BETWEEN子句)。我该怎么做?
d.Proce >= minValue
d.Price =< maxValue
BETWEEN
efzxgjgh1#
不如这样吧:
var result = from db.MyTable.Where(d => (double)d.Price >= minValue && (double)d.Price <= maxValue)
1zmg4dgp2#
只是为了完整性;如果你基于不同的输入构建一个查询,你可以用连续的Where调用来组合它:
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();
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))
3条答案
按热度按时间efzxgjgh1#
不如这样吧:
1zmg4dgp2#
只是为了完整性;如果你基于不同的输入构建一个查询,你可以用连续的
Where
调用来组合它:jc3wubiy3#
通过引入INumber接口,您可以创建一个适用于大多数数值类型的简单抽象:
它会看起来更干净,更清晰海事组织