有可能...... ???我的主页上有4个DropDownLists 用户可以选择任何,全部或部分 DropDownLists。我正在使用SESSION捕获他们的选择(或非选择) 变量。我希望能够做的是通过会议 变量值到我的数据访问层并构建一个WHERE子句 (也许使用StringBuilder)然后将变量SOMEHOW放入 我的查询表达式。那可能吗???对不起,我是新手。谢谢~Susan~
public class DLgetRestaurants
{
FVTCEntities db = new FVTCEntities();
public List<RESTAURANT> getRestaurants(string cuisineName, string priceName, string cityName)
[Build a string based on the values passed to the function]
{
var cuisineID = db.CUISINEs.First(s => s.CUISINE_NAME == cuisineName).CUISINE_ID;
List<RESTAURANT> result = (from RESTAURANT in db.RESTAURANTs.Include("CITY").Include("CUISINE").Include("Price")
where **[USE STRINGBUIDER EXPRSSION HERE]**
select RESTAURANT).ToList();
return result;
}
}
答案 0 :(得分:1)
您可以在LINQ扩展方法语法中组合由逻辑AND链接的Where条件相对简单:
var query = db.RESTAURANTs.Include("CITY").Include("CUISINE").Include("Price");
if (userHasSelectedInDDL1)
query = query.Where(r => r.PropertyForDDL1 == ValueFromDDL1);
if (userHasSelectedInDDL2)
query = query.Where(r => r.PropertyForDDL2 == ValueFromDDL2);
if (userHasSelectedInDDL3)
query = query.Where(r => r.PropertyForDDL3 == ValueFromDDL3);
if (userHasSelectedInDDL4)
query = query.Where(r => r.PropertyForDDL4 == ValueFromDDL4);
List<RESTAURANT> result = query.ToList();
对于动态构建查询的更灵活的解决方案,boca推荐的Dynamic LINQ库可能是更好的选择。
答案 1 :(得分:0)
我过去使用Dynamic Linq Library完成了这项工作。