任何人都可以帮忙吗?我坚持使用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
}
我应该能够看到insuranceId并执行此操作,不是吗?
return from h in qry
where h.Insurance.InsuranceId == 1;
这是班级(非常小)
public class Insurance
{
public int? InsuranceId { get; set; }
public float? price{ get; set; }
}
也许我需要了解一些特殊的lambda :-)?
任何帮助都非常感谢,谢谢。
答案 0 :(得分:2)
您发布的样本中是否存在拼写错误?
我注意到以下内容:
// 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的属性和一个名为Insurances的属性,这是一个集合。然而,您的查询指出:
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;