Linq join, group, count, где count больше значения

У меня есть следующее выражение 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.


person jrubengb    schedule 25.10.2010    source источник


Ответы (3)


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

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)
};
person Nix    schedule 25.10.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 перед выбором? В моем примере это сработало, но я не уверен, не видя данных.

person Dismissile    schedule 25.10.2010
comment
Я надеялся подсчитать, где в объединенной таблице встречаются повторяющиеся значения DSCID, а не просто иметь ли объединенная таблица количество записей больше 1. Большое спасибо за ответ. - person jrubengb; 25.10.2010

"SELECT  [SubsNumber], sum([Usage_MB])/1024 as GB FROM [VASCDR].[dbo].[nrmSubsDailyMBUsage] where SubsNumber ='" + textBox1.Text.Trim() + "'" group by [SubsNumber] ;

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

person chalana    schedule 12.03.2013