这两天因为做项目用到LinQ to SQL 的 Lambda表达式,在调试的时候顺便总结了下用法:
GroupBy 有 AS 无 点 有 it
OrderBy 无 AS 无 点 有 it
Select 无 AS 无 点 无 it(单一)
Select 有 AS 无 点 有 it(Sum)
例子是:
string groupBy="it.Date AS Date, it.Product.Name AS ProductName";(AS后面的名称不能有“.”)
string orderBy="it.Date,it.ProductName";(此处没有AS,用到的名称全部是groupBy的AS后的名称,但是带有it)
string select="Date,ProductName,SUM(it.Money) AS Money";(在select中除了SUM以外的字段全都没有it,SUM后一定要有AS,AS后的字段名也不能有“.”)
ObjectQuery<DbDataRecord> query = context.Entity.Where(where).GroupBy(groupBy, select).OrderBy(eorderBy)
PS:好像OrderBy要放在GroupBy之后
还有就是,context后面跟的Entity必须是表名,但是如果想不在这里定死表名,由传入参数来决定,可以使用以下的定义方法:
ObjectQuery<TEntity> query = context.CreateQuery<TEntity>(collectionName);
IQueryable<TEntity> source = query.AsQueryable();
source = source.Where(condition.Expression).OrderBy(orderBy);
但是此处至少要指明TEntity的接口,其他类可继承此接口,就可以了。
但是如果连接口都不想指定,那么就等Visual Studio 2010 吧!听说.NetFramework 4.0 就不需要<TEntity>这个东西了!