gpt4 book ai didi

c# - 帮助使用子查询进行 linq 查询

转载 作者:太空宇宙 更新时间:2023-11-03 11:52:48 25 4
gpt4 key购买 nike

任何人都可以帮忙吗?我被 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 注入(inject)到保险属性(property)中的,它的工作原理与我在调试中看到的一样......我在保险中有 4 条记录......保险在 House 中是这样定义的,基本上是另一个小类的 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;

这是类(class)(非常小)

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

也许我需要了解某种特殊的 lambda :-)?

非常感谢任何帮助,谢谢。

最佳答案

您发布的示例中是否有拼写错误?

我注意到以下几点:

// 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;

关于c# - 帮助使用子查询进行 linq 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1637110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com