может кто-нибудь помочь?, я застрял с запросом 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
}
в основном страхование ввозится в страховое имущество от Model.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
}
Я должен уметь видеть insuranceId и делать это, нет?
return from h in qry
where h.Insurance.InsuranceId == 1;
Вот класс (его очень маленький)
public class Insurance
{
public int? InsuranceId { get; set; }
public float? price{ get; set; }
}
Может быть, есть какая-то специальная лямбда, которую мне нужно знать о:-)?
Любая помощь действительно ценится, спасибо.
Есть ли опечатки в представленном вами образце?
Я заметил следующее:
// 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 есть свойство, называемое идентификатором, и свойство под названием "Страховки", которое представляет собой коллекцию. Однако ваш запрос гласит:
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;
where h.Insurance.InsuranceId == 1;
?