class Employee
{
public string EmpID { get; set; }
public bool Sex { get; set; }
public int Age { get; set; }
}假设有下面2个变量:
int groupIndex
List<Employee> emps现在要根据 groupIndex 取值来生成不同的 SQL 语句,如果直接写 SQL 语句话可以把一条语句拆分成多个字符串来组合想要的结果,
但是用 linq 的话需要要写多次:if (groupIndex == 1)
{
var dataSource =
from e in emps
group e by new { e.EmpID } into g
orderby new { g.Key.EmpID }
select new { g.Key.EmpID };
}else if (groupIndex == 2)
{
var dataSource =
from e in emps
group e by new { e.EmpID, e.Sex } into g
orderby new { g.Key.EmpID, g.Key.Sex }
select new { g.Key.EmpID, g.Key.Sex };
}
else if (groupIndex == 3)
{
var dataSource =
from e in emps
group e by new { e.EmpID, e.Sex ,e.Age } into g
orderby new { g.Key.EmpID, g.Key.Sex, e.Age }
select new { g.Key.EmpID, g.Key.Sex, e.Age };
}
else ..................有没有办法用动态查询来实现呢?我看到 MSDN 里面的例子有办法用目录树组合查询,但是没有多个 select、group或orderby 这样的例子,请问谁知道怎么做?
{
public string EmpID { get; set; }
public bool Sex { get; set; }
public int Age { get; set; }
}假设有下面2个变量:
int groupIndex
List<Employee> emps现在要根据 groupIndex 取值来生成不同的 SQL 语句,如果直接写 SQL 语句话可以把一条语句拆分成多个字符串来组合想要的结果,
但是用 linq 的话需要要写多次:if (groupIndex == 1)
{
var dataSource =
from e in emps
group e by new { e.EmpID } into g
orderby new { g.Key.EmpID }
select new { g.Key.EmpID };
}else if (groupIndex == 2)
{
var dataSource =
from e in emps
group e by new { e.EmpID, e.Sex } into g
orderby new { g.Key.EmpID, g.Key.Sex }
select new { g.Key.EmpID, g.Key.Sex };
}
else if (groupIndex == 3)
{
var dataSource =
from e in emps
group e by new { e.EmpID, e.Sex ,e.Age } into g
orderby new { g.Key.EmpID, g.Key.Sex, e.Age }
select new { g.Key.EmpID, g.Key.Sex, e.Age };
}
else ..................有没有办法用动态查询来实现呢?我看到 MSDN 里面的例子有办法用目录树组合查询,但是没有多个 select、group或orderby 这样的例子,请问谁知道怎么做?
解决方案 »
- 关于多次拨号得到的多个IP指定IP访问出去
- 《C#本质论》第三版 这本书怎么样,我准备买!
- 摄像头驱动DLL调用问题,高手帮忙
- 定义用户权限
- 为什么找不到APLib的那么命名空间,里面有借口IHtmlTag
- 把treeview树型结构转换到表格中显示?(顶着有分)
- Visual Studio 2005 default.aspx 设计
- IIS6的乱码问题---求除了重装系统之外的解决办法
- 用Visual C#读Excel文件的发现的有问题,怎么解决呀。
- C#和ACCESS已经困扰我三天了!
- C#如何对AD中的计算机中的安全添加组或成员
- 关于 ,,Request.ServerVariables["HTTP_ACCEPT"]
here's the link: http://talentgrouplabs.com/blog/archive/2007/11/25/dynamic-linq-queries--dynamic-where-clause-part-1.aspx
string[] searchTerms = new string[] { "Maria", "Pedro" };string search = "";foreach (string searchTerm in searchTerms){ search += "ContactName.Contains(\""+searchTerm+"\") or ";}search += "1=0";var query = db.Customers.Where(search).Select(c => c);