我想用LINQ在2个SQL查询之间进行一种BETWEEN操作。
我收集了个人姓氏。
另一个集合,其中包含要搜索的姓氏的开始和结束值的集合。
例如,假设我在一个表中有一个范围,以获取具有BA和BE之间的姓氏的人数。
var person = dc.Persons.Select(p => p.Surname);
var range = from r in dc.Ranges
select new
{
ID = r.ID,
StartRange = r.StartValue, //e.g. BA
EndRage = r.EndValue //e.g. BE
};
现在我需要每个范围内的人数。
var PersonCount = from r in range
select new
{
r.ID,
NumberOfPersonsInRange = person.Where(t => t.Surname >= r.StartRange
&& t.Surname <= r.EndRage).Count()
//This does not work. Gives error that Operator '>=' cannot be applied to operands of type 'string' and 'string'
}
答案 0 :(得分:4)
如果我正确理解了您的问题,则可以使用string.CompareTo
方法:
person.Count(t => t.Surname.CompareTo(r.StartRange) >= 0)
&& t.Surname.CompareTo(r.EndRage) <= 0)