2013-10-14 3 views
2
public static IEnumerable<AppCache> GetTopRatedApps(string language,bool isinitialized) 
    { 
     List<AppCache> objApps = new List<AppCache>(); 

     objApps = GetAllApps(isinitialized,language).ToList(); 

     List<RatingCache> objRatings = new List<RatingCache>(); 

     objRatings = GetAllRatings(); 

      var query = 
    from Apps in objApps 
    join ratings in objRatings 
     on Apps.AppId equals ratings.AppId where ratings.RatingGiven == 1 
    select new AppCache(); 

     return query; 
    } 

Stored Procedure:Преобразование хранимой процедуры запроса LINQ

select o.AppId, count(*) as ItemCount 
from App o 
inner join Rating od 
    on o.AppId = od.AppId 
where od.RatingGiven = 1 
group by o.AppId 

не может понять, как получить количество элементов из списка.

Не: AppCache эквивалентно App

+1

ли 'group' помочь http://msdn.microsoft.com/en-us/library/bb545971.aspx – Harrison

+0

также, посмотрите на некоторые примеры Группировки сделано в LINQ: HTTP: //code.msdn. microsoft.com/LINQ-to-DataSets-Grouping-c62703ea – GolfWolf

+0

Вот сообщение, которое показывает, что вы ищете http://stackoverflow.com/a/10047966/2145211 – Harrison

ответ

2

Это должно быть перевод хранимой процедуры. Если вы хотите вернуть что-то еще, просто измените метод select.

var query = from Apps in objApps 
      join ratings in objRatings 
       on Apps.AppId equals ratings.AppId 
      where ratings.RatingGiven == 1 
      group Apps by Apps.AppId into g 
      select new { AppId = g.AppId, ItemCount = g.Count() } 
Смежные вопросы