Помогите с запросом linq с подзапросами - PullRequest
2 голосов
/ 28 октября 2009

Может кто-нибудь помочь ?, Я застрял с запросом linq ..

в основном у меня есть стандартный запрос linq, который возвращает поля, 1 поле (страхование) на самом деле является еще одним запросом linq, например

   // original from this in etc not included to keep msg short>
    select new Models.Custom.House.Insurance()
               {
                   Id = v.IdHouse,
                   Insurances = from gt in GroupHouseTariffs
                                join  i in InsuranceGroup
                                    on new { gt.IdTariff, gt.IdGroup}
                                       equals
                                       new { i.IdTariff, i.IdGroup}
                                select new
                                       {
                                           InsuranceId = i.Id,
                                           Price = i.Price
                                       }

в основном страховка вводится в страховую собственность от Models.Custom.House, она работает так, как я вижу это в моей отладке ... у меня есть 4 записи в страховке .. страховка определяется как это в доме, который в основном Iqueryable другого маленького класса ..

       public IQueryable<Insurance> Insurances { get; set;}

Итак, я попытался написать метод расширения, например,

    public static IQueryable<House> WithInsuranceId(this IQueryable<House> qry, int insuranceId)
    {
        return from h in qry
               where h.Insurance .. // BUT here is the problem i don't see my properties, I see plenty of linq methods

    }

Я должен видеть страховой идентификатор и делать это, нет?

    return from h in qry
               where h.Insurance.InsuranceId == 1;

Вот класс (очень маленький)

    public class Insurance
    {
        public int? InsuranceId { get; set; }
        public float? price{ get; set; }
    }

Может быть, есть какая-то особенная лямбда, о которой мне нужно знать :-)?

Любая помощь очень ценится, спасибо.

1 Ответ

2 голосов
/ 29 октября 2009

Есть ли опечатки в образце, который вы разместили?

Я заметил следующее:

// No object name specified, Price has a capital P
select new
{
    InsuranceId = i.Id,
    Price = i.Price
}

// Price has a small p
public class Insurance
{
    public int? InsuranceId { get; set; }
    public float? price{ get; set; }
}

Теперь ваш фактический запрос мне тоже кажется неправильным.

House.Insurance имеет свойство с именем ID и свойство, которое называется Страхованием, которое является коллекцией. Тем не менее ваш запрос гласит:

 return from h in qry
           where h.Insurance.InsuranceId == 1;

Вы имеете в виду:

return from h in qry
           where h.Insurance.Id == 1 select h;

Или:

return from h in qry
           where h.Insurance.Insurances.Contains(i => i.InsuranceID ==1) select h;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...