LINQ: подсчет количества истинных логических значений в нескольких столбцах - PullRequest
3 голосов
/ 11 марта 2010

Я использую LINQ to SQL для ускорения доставки проекта, с которым он действительно помогает. Однако я борюсь с несколькими вещами, которые я привык делать с ручным SQL.

У меня есть коллекция LINQ, содержащая три столбца, каждый из которых содержит логическое значение , указывающее, доступна ли электронная почта, мобильный телефон или адрес.

Я хочу написать запрос LINQ, чтобы дать мне количество истин для каждого столбца , поэтому сколько строк в столбце электронной почты установлено в true (и то же самое для двух других столбцов )

Ответы [ 3 ]

2 голосов
/ 11 марта 2010

Если вам нужен один объект, содержащий результаты:

var result = new {
    HasEmailCount = list.Count(x => x.HasEmail),
    HasMobileCount = list.Count(x => x.HasMobile),
    HasAddressCount = list.Count(x => x.HasAddress)
};

Или используя статистическую функцию:

class Result
{
 public int HasEmail;
 public int HasAddress;
 public int HasMobile;
}

var x = data.Aggregate(
 new Result(),
 (res, next) => {
  res.HasEmail += (next.HasEmail ? 0 : 1);
  res.HasAddress += (next.HasAddress ? 0 : 1);
  res.HasMobile += (next.HasMobile ? 0 : 1);
  return res;
 }
);

x имеет тип Result и содержит агрегированную информацию. Это также может быть использовано для более сложных агрегаций.

1 голос
/ 11 марта 2010

Вы можете сделать это так:

var emailCount = yourDataContext.YourTable.Count(r => r.HasEmail);

и т.д.

1 голос
/ 11 марта 2010
var mobileCount = myTable.Count(user => user.MobileAvailable);

И т. Д. По остальным подсчетам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...