我正在为一个asp.net应用程序构建搜索功能,并使用LINQ to SQL根据所选的搜索条件检索数据。搜索条件包括:
1. 国家 2. 城市 3. 区域 4. 房间数量 5. 租赁周期
只有第一个搜索条件国家是必填字段。但是,如果用户输入了条件2、3、4和/或5的值,则应考虑这些输入值,并仅检索与所有输入搜索条件匹配的结果。请注意,如果条件2、3、4和/或5中的任何一个为空(null),则LINQ应该作为“不关心”并返回该行。
例如,如果输入的条件如下:
1. 国家=美国 2. 城市=null 3. 区域=null 4. 房间数量=null 5. 租赁周期=null
那么应该返回所有Country==USA的行。
另一个例子:
1. 国家=英国 2. 城市=null 3. 区域=null 4. 房间数量=5 5. 租赁周期=null
然后应返回所有Country==UK且NumberOfRooms==5的行。
如何在LINQ to SQL中实现这一点?
以下是我目前的代码:
1. 国家 2. 城市 3. 区域 4. 房间数量 5. 租赁周期
只有第一个搜索条件国家是必填字段。但是,如果用户输入了条件2、3、4和/或5的值,则应考虑这些输入值,并仅检索与所有输入搜索条件匹配的结果。请注意,如果条件2、3、4和/或5中的任何一个为空(null),则LINQ应该作为“不关心”并返回该行。
例如,如果输入的条件如下:
1. 国家=美国 2. 城市=null 3. 区域=null 4. 房间数量=null 5. 租赁周期=null
那么应该返回所有Country==USA的行。
另一个例子:
1. 国家=英国 2. 城市=null 3. 区域=null 4. 房间数量=5 5. 租赁周期=null
然后应返回所有Country==UK且NumberOfRooms==5的行。
如何在LINQ to SQL中实现这一点?
以下是我目前的代码:
var data = from x in db.Units where x.Country == coutnryID && /*PLEASE HELP!*/ select x;