Linq in C#需要查询 - 一对多关系,需要一对多记录
需要帮助在linq中完成。Linq in C#需要查询 - 一对多关系,需要一对多记录
我有3张桌子。
客户
CustumerOrder
订单明细
我需要在一个查询中的所有客户列表(前提是他们已经把ATLEAST一个顺序)的所有订单仅当订单价值高于100时才为每位客户订购。
问候,
恶劣
我说你想是这样的:
from c in Customers
where c.CustomerOrders.Any()
select new
{
customer,
Orders =
from co in c.CustomerOrders
where co.TotalPrice > 100
select co.OrderDetails
}
或者,如果你不在CustomerOrder表中没有“TotalPrice”列,请用以下内容替换内部查询:
Orders =
from cp in c.CustomerOrders
where co.OrderDetails.Sum (od => od.Price) > 100
select co.OrderDetails
编辑:如果你想与OrderTotalPrice 100多家,包括客户只与至少一个订单,使用让声明:
from c in Customers
let highValueOrders =
from co in c.CustomerOrders
where co.TotalPrice > 100
select co.OrderDetails
where highValueOrders.Any()
select new
{
customer,
highValueOrders
}
您可以用类似的方式添加更多的条件。
非常感谢大家。我非常感谢快速回复。 但此查询不考虑该部分 - 客户将是最终名单只有当他有ATLEAST一个为了与OrderTotalPrice超过100 + 其实我有几个条件,这里列入客户的最终选择 - 如果客户的类型为“常规”客户,或者年龄> 35,如果客户的类型为“稀有”,则只有至少有一个订单的年龄> 30时才选择客户。 CustomerType存储在CustomerDetails表中。 请帮我这个.. 问候, Harshal – 2010-10-23 07:17:44
非常感谢乔..几个问题 - 1,我们可以调用LINQ查询或Lambda表达式内C#的功能呢?我需要这个来计算年龄,在我的数据库中有一个生日字段,我需要从这个字段计算年龄2.我如何从上面的LINQ查询获取列表,现在我只需要从上面的查询客户有更多的行数woth客户详细信息。我真的很困惑。不知道我怎么能通过这个UI。我可以得到像Dictionary
你不能在通过L2S或EF管道的lambda表达式中调用你自己的函数。有关解决方法,请查看:http://mathgeekcoder.blogspot.com/2008/07/advanced-domain-model-queries-using.html – 2010-10-24 01:28:57
下面是根据了一些假设一个猜测:
var result =
from customer in Customers.Where(a => a.CustomerOrder.Count > 0)
from order in CustomerOrder.Where(a => a.OrderDetails.Sum(b => b.Price) > 100)
select new
{
customer,
order.OrderDetails
}
请添加比表名更多的细节。例如,列。更好的是,因为这是LinqToSql,请改为提供您的类/属性名称。 – 2010-10-22 18:57:55
嗨Kirk,可以说有以下列 - 1.客户 - 客户Id,客户名称2.客户订单 - OrderId,CutomerId,OrderAmount 3. OrderDetails - OrderId,OrderDate ......现在请让我知道如何获得收集像Dictionary>使用Linq查询.......希望这很好解释。这只是常见的客户订单情景,您可以根据情景假设其他细节。 –
2010-10-23 09:09:53