【发布时间】:2011-12-17 12:39:49
【问题描述】:
我需要编写一个相当复杂的查询。如果可能的话,我希望使用 Linq to Sql 来做到这一点。数据库是这样的:
客户(名字、姓氏、ID、性别)
订单(日期、数量、重量、商品名称、价格)
地址(城市、州、邮编)
查询是让用户通过这些字段中的任何一个进行搜索,如果是数字字段,则可以根据需要搜索 。
这样的事情是我需要实现的示例查询:
查询 1: 选择名字 = 'John' 且至少有一个订单(重量 > 40 或数量 > 10 或价格 > 5)且邮政编码 = 12345 的客户。
查询 2: 选择名字 = 'John' 并且至少有一个重量
我可以获得搜索客户的基本部分,但我一直在搜索 Order 表,用户可以在其中以 OR 方式指定 =。
query = Context.Customers.AsQueryable();
if (searchingFirstName) query = query.Where(cust => cust.First == firstName);
if (searchingLastName) query = query.Where(cust => cust.Last == lastName);
if (searchingZip) query = query.Where(cust => cust.Address.Zip == zip);
// using dynamic Linq
if (searchingGender) query = query.Where("Gender == @0", gender);
// how do I search the Orders? The dynamic linq functions appear
// to only work on the top level table
【问题讨论】:
标签: c# .net linq-to-sql