SQL запрос в Linq - PullRequest
       2

SQL запрос в Linq

0 голосов
/ 05 июля 2010

Пожалуйста, любой может помочь мне написать этот SQL-запрос в Linq.

select 
  P.ID, 
  P.Name,
  Set_selected= 
    case when exists(
    select C.ClassifierID 
    from dbo.ProductClassifiers C 
    where C.ProductID=130 and C.ClassifierID=P.ID) 
    then 'Yes' else 'No' end
  from dbo.Classifier P

Ответы [ 3 ]

0 голосов
/ 05 июля 2010

Не проверено, но, надеюсь, работает:

var q = classifier.Select(
  p => new {
    p.ID,
    p.Name,
    Set_selected = productClassifiers
      .Select(c => c.ProductID == 130 && c.ClassifierID == p.ID)
      .Any() ? "Yes" : "No"
  }
);

Код предполагает, что у вас есть две IEnumerable<T>, представляющие таблицы Classifier и ProductClassifiers.

0 голосов
/ 05 июля 2010

Вот попытка:

var query = from p in dataContext.Classifiers
            select new {
                p.ID,
                p.Name,
                p.Selected = dataContext.ProductClassifiers
                                        .Where(c => c.ProductID == 130 &&
                                                    c.ClassifierID == p.ID)
                                        .Any()
            };

(Это сделает свойство Selected логическим, а не Да / Нет, но с ним обычно будет проще работать.)

Вы должны посмотреть, как выглядит переведенный SQL, и, в частности, как выглядит план запроса по сравнению с вашим оригиналом.

0 голосов
/ 05 июля 2010
var retVal = (from s in dataContext.ProductClassifiers
          join k in dataContext.Classifier 
          on s.ClassifierId equals k.Id
          where s.ProductId == 30
          select new {write here what values you want to get like s.Id,k.Name etc}).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...