LINQ to Entities复杂查询

时间:2011-07-15 14:52:48

标签: linq frameworks entity

  

有可能...... ???我的主页上有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;
        }
    }

2 个答案:

答案 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完成了这项工作。

相关问题