gpt4 book ai didi

c# - 数据绑定(bind)到网格时限制 LINQ 子查询

转载 作者:太空宇宙 更新时间:2023-11-03 11:55:22 24 4
gpt4 key购买 nike

我想限制返回的子元素的数量。在此示例中,Order.CustomerID“VINET”有 3 个订单详细信息。我只想看到单价为 14 的记录。我不想看到单价等于 9.8 或 43.8 的订单详情

最后,我想在动态 where 查询或谓词中执行此操作,但这个简单的示例应该可以说明我的问题。我尝试了几种不同的方法,包括下面显示的两种方法。我意识到问题在于当我扩展时 LINQ 会自动运行它自己的查询,但是有人有好的解决方案吗?

private void btnJoinProblem_Click(object sender, EventArgs e)
{
NorthwindDataContext db = new NorthwindDataContext();
var tempQ2 = (from od in db.Order_Details
join o in db.Orders on od.OrderID equals o.OrderID
where od.UnitPrice == 14
select o).Distinct();
}

还会在订单详细信息级别带回太多子记录

NorthwindDataContext db = new NorthwindDataContext();
var tempQ = from o in db.Orders
where o.Order_Details.Any(od => od.UnitPrice == 14)
select o;

var bindingSource = new BindingSource();
bindingSource.DataSource = tempQ;
ultraGrid1.DataSource = bindingSource;

最佳答案

好吧,我要做的第一件事是将您想要的列“选择”为匿名类型(或命名类型)——这意味着您正在获取矩形数据,您不必担心太多关于延迟加载。其次,您需要一个网格列表。

尝试这样的事情:

using(NorthwindDataContext db = new NorthwindDataContext()) {
var query= from od in db.Order_Details
join o in db.Orders on od.OrderID equals o.OrderID
where od.UnitPrice == 14
select new {o.OrderId, o.Customer.CustomerName,
od.UnitPrice}; // etc

ultraGrid1.DataSource = query.Distinct().ToList();
}

关于c# - 数据绑定(bind)到网格时限制 LINQ 子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/669336/

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