2013-02-11 1 views
0

У меня есть запрос sql, который я пытаюсь преобразовать в Linq, но не могу получить его для работы.Не удалось получить рабочий подзапрос linq

select l.nid, 
     l.sName, 
     l.language, 
     coalesce(p.kLanguage, 0) kLanguage 

    from vLanguage l 
     left join 
      (
       select pl.kLanguage, 
         p.nid, 
         p.sName 

       from vProductLanguage pl 
        left join vProduct p 
          on pl.kProduct = p.nid 
       where p.nid = 1 
      ) p 
    on l.nid = p.kLanguage 
    where l.bClosed =0 

мне удалось так потому что здесь, в моей WCF службы

[WebInvoke(Method = "PUT", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "ProductLanguageList")] 
    public List<LookUpProductLanguage> GetProductLanguageList() 
    { 
     var passedProductId = int.Parse("12"); 
     var query = from languageEntity in _languageEntityRepository.AsQueryable() 
        join subQueryResult in (from productLanguageEntity in _productLanguageEntityRepository.AsQueryable() join productEntity in _productRepository.AsQueryable() on productLanguageEntity.LanguageProductId equals productEntity.Id into joinedProductLanguage 
              from productLanguageJoin in joinedProductLanguage.DefaultIfEmpty() where productLanguageJoin.Id.Equals(passedProductId) 
              select new {LanguageId = productLanguageEntity.LanguageId} 
              ) on languageEntity.Id equals subQueryResult.LanguageId 

     return null; 
    } 

На данный момент я вернулся пустой, но хотели бы вернуться столбцы, указанные в запросе SQL. Я получаю ошибку около строки join subQueryResult «Аргументы типа не могут быть выведены из запроса». Что я здесь делаю? Пожалуйста, поправьте меня, поскольку я уверен, что я делаю что-то неправильно.

+0

любой ключ? Пожалуйста, помогите – DevelopmentIsMyPassion

+0

Попробуйте добавить '.ToList()' в конце вашего запроса (сначала завершите весь запрос в скобках), как этот 'var query = (from ...). ToList();' – Tim

+0

@Tim Я не чтобы добавить .ToList() даже после добавления скобок. Пожалуйста, помогите. Также мой запрос не завершен в соответствии с моим оператором sql – DevelopmentIsMyPassion

ответ

1

Наконец-то удалось. Вот мой запрос.

[WebInvoke(Method = "PUT", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "ProductLanguageList")] 
    public List<LookUpProductLanguage> GetProductLanguageList(GetParameters param) 
    { 
     var passedProductId = int.Parse(param.ProductId); 
     var query = from languageEntity in _languageEntityRepository.AsQueryable() 
        join subQueryResult in 
         (from productLanguageEntity in _productLanguageEntityRepository.AsQueryable() 
         join productEntity in _productRepository.AsQueryable() on 
          productLanguageEntity.LanguageProductId equals productEntity.Id into 
          joinedProductLanguage 
         from productLanguageJoin in joinedProductLanguage.DefaultIfEmpty() 
         where productLanguageJoin.Id.Equals(passedProductId) 
         select new {productLanguageEntity.LanguageId} 
         ) on languageEntity.Id equals subQueryResult.LanguageId into a 
        from b in a.DefaultIfEmpty() 
        where languageEntity.Closed == 0 

        select new LookUpProductLanguage {LanguageId = languageEntity.Id, LanguageName = languageEntity.Name,LanguageCode = languageEntity.Language,LanguageProductId = b.LanguageId }; 

     return query.ToList(); 

    } 

Большое спасибо, ребята, которые прилагают усилия, пытаясь ответить мне.

Смежные вопросы