Linq объединение, группа, счет, где количество больше, чем значение - PullRequest
0 голосов
/ 25 октября 2010

У меня есть следующее выражение linq, которое позволяет мне объединить две таблицы, сгруппировать их по DSCID, а затем получить счетчик сгруппированных значений:

var qryGeoApppendCount =
              from a in append
              join g in geo
              on a.Field<string>("RNO")
              equals g.Field<string>("RNO")
              group g by g.Field<int>("DSCID") into appendGeo
              select new
              {
                DscId = appendGeo.Key,
                DscIdCount = appendGeo.Count()
              };

Мне нужно сделать еще один шаг, выбрав количество, большее 1. Я пробовал что-то вроде этого:

select new
{
    DscId = appendGeo.Key,
    DscIdCount = appendGeo.Count(n => n.Count > 1)
};

но это не сработало. Мне нужно иметь возможность выдавать ошибку всякий раз, когда qryGeoAppendQuery возвращает записи с числом> 1, поэтому в идеале запрос должен быть заключен в оператор if.

Ответы [ 4 ]

2 голосов
/ 25 октября 2010
var qryGeoApppendCount =
              (from a in append
              join g in geo
              on a.Field<string>("RNO")
              equals g.Field<string>("RNO")
              group g by g.Field<int>("DSCID") into appendGeo
              select new
              {
                DscId = appendGeo.Key,
                DscIdCount = appendGeo.Count()
              })
              .Where(a => a.DscIdCount > 1);
1 голос
/ 25 октября 2010

Не могли бы вы просто сделать ...

select new
{
  DscId = appendGeo.Key,
  DscIdCount = appendGeo.Where(n => n.Count > 1).Count()
};

или если вы просто хотите узнать, существуют ли они ...

select new
{
  DscId = appendGeo.Key,
  ThrowException = appendGeo.Any(n => n.Count > 1)
};
0 голосов
/ 12 марта 2013
"SELECT  [SubsNumber], sum([Usage_MB])/1024 as GB FROM [VASCDR].[dbo].[nrmSubsDailyMBUsage] where SubsNumber ='" + textBox1.Text.Trim() + "'" group by [SubsNumber] ;

Как это сделать с помощью c #

0 голосов
/ 25 октября 2010
var qryGeoApppendCount =
          from a in append
          join g in geo
          on a.Field<string>("RNO")
          equals g.Field<string>("RNO")
          group g by g.Field<int>("DSCID") into appendGeo
          where appendGeo.Count() > 1
          select new
          {
            DscId = appendGeo.Key,
            DscIdCount = appendGeo.Count()
          };

Не можете ли вы добавить предложение where перед выбором?Это сработало в моем примере, но я не уверен, что не вижу данных.

...