使用LINQ对值范围内的元素进行计数

时间:2018-09-13 15:08:09

标签: c# linq-to-sql

我想用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'
              }

1 个答案:

答案 0 :(得分:4)

如果我正确理解了您的问题,则可以使用string.CompareTo方法:

person.Count(t => t.Surname.CompareTo(r.StartRange) >= 0)
                  && t.Surname.CompareTo(r.EndRage) <= 0)