C# 如何使用c linq在两个不同的表中获得两个不同的值
我有一个c程序,它有一个datagridview 我想使用linq在两个不同的表中获取值 我知道我可以使用sql server存储过程实现这一点 但我想在linq中完成,所以我不需要更新数据库 这是我的密码:C# 如何使用c linq在两个不同的表中获得两个不同的值,c#,linq,C#,Linq,我有一个c程序,它有一个datagridview 我想使用linq在两个不同的表中获取值 我知道我可以使用sql server存储过程实现这一点 但我想在linq中完成,所以我不需要更新数据库 这是我的密码: public List<InsuranceHeader> GetInsuranceList(int InsuranceHeaderId) { var getData =(from item in context.InsuranceHeader
public List<InsuranceHeader> GetInsuranceList(int InsuranceHeaderId)
{
var getData =(from item in context.InsuranceHeader
join item2 in context.InsuranceDetail
on item.InsuranceHeaderId equals item2.InsuranceDetailId
where item.InsuranceHeaderId == InsuranceHeaderId
select item).ToList();
return getData;
}
另一个问题是,当我在InsuranceDetail中返回一个值时,系统会抛出一个错误
因为我知道我将我的返回类型指定为ListInsuranceHeader
要做到这一点?对不起,我的英语是您必须为它创建一个新类,因为方法不能返回匿名类型 比如:
我还将返回一个IEnumerable,因为查询只在需要时执行。ToList将迭代所有项目。如果仅请求GetInsuranceList1.FirstOfDefault,则仅执行第一次迭代。除非您使用orderby等。我也有同样的问题,所以我使用了上一篇文章中的解决方案。 不幸的是,我无法将其附加到GridView。 在数据绑定上:
GridView1.DataSource = GetInsuranceList();
GridView1.DataBind();
我得到:
直接绑定到存储查询的数据DbSet、DbQuery、DbSqlQuery是
不支持。而是用数据填充数据库集,例如
在DbSet上调用Load,然后绑定到本地数据。用于WPF绑定
到DbSet.Local。对于WinForms,绑定到DbSet.Local.ToBindingList
我在GetInsuranceList的末尾添加了ToList
public IEnumerable<InsuranceWithDetail> GetInsuranceList(int InsuranceHeaderId)
{
var results = (from item in context.InsuranceHeader
join item2 in context.InsuranceDetail
on item.InsuranceHeaderId equals item2.InsuranceDetailId
where item.InsuranceHeaderId == InsuranceHeaderId
select new InsuranceWithDetail
{
InsuranceHeader = item,
InsuranceDetail = item2
}).ToList;
return results;
}
现在我从数据绑定得到:
GridView1.DataSource = GetInsuranceList();
GridView1.DataBind();
GridView的数据源没有任何属性或属性
从中生成列的属性
这不是C代码。请更新sample.on item.InsuranceHeaderId=item2.InsuranceDetailId,如果您联接两个表,请使用equals。我已经编辑了代码,希望此函数返回InsuranceHeader和InsuranceDetail中的值列表。我不会将其作为列表返回,而是作为IEnumerable返回,联接明细表有什么用?仅获取包含子项的标题?选择SomeTypeitem,item2将所需属性封装为新类型感谢Jeroen您的查询非常有效,我学到了一种不同的方法非常感谢!