2011-05-07 91 views
2

我正在构建一个动态查询。基本上,一个函数接收一个MyParams对象,其属性是参数;我创建了基于MyParams对象的Where子句并返回一个匿名类型的列表。linq-to-sql处理动态查询?

那么,这是否L2SQL支持创建一个动态查询?我有一个数据上下文已经适用于其他查询。根据参数的不同,我需要访问一些表,所以我也需要动态地编写From子句,或者我应该只包含所有的表并只关注where子句?

谢谢。

回答

3

你可以做这样的事情,如果这是你想要什么:

 var baseQuery = dataAccess.Table1.Where(arg => arg.Field1 = 1); 

     if (parameter[1] = true) 
     { 
      baseQuery = baseQuery.Where(arg => arg.Field2 = 'Test'); 
     } 

     if (parameter[2] = true) 
     { 
      baseQuery = 
       from x in baseQuery 
       join y in dataAccess.Table2 on 
        x.Id equals y.Id 
       where y.Field3 = 'Something' 
       select x; 
     } 

     return baseQuery.ToList(); 
+0

如果我一直在使用(MYDC TheDC =新MYDC()),是如何工作的呢?我该怎么处理multiple from子句? – frenchie 2011-05-07 19:03:28

+0

@frenchie在实现查询之前不要处理“MyDC”。换句话说,'return baseQuery.ToList()'应该在'using'语句中。 – 2011-05-07 19:17:10

+0

好,感谢您的建议 – frenchie 2011-05-07 19:21:39

1

您应该能够使用我的answer另一个问题。你的问题不是一个确切的副本你的是更通用的,但为什么解决这个问题是完全一样的。