8,497
社区成员
发帖
与我相关
我的任务
分享
static void Main(string[] args)
{
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
//表达式树方式查询
ParameterExpression parameter = Expression.Parameter(typeof(Address), "p");
MemberInfo memberInfo = typeof(Address).GetMember("AddressID").Single();
MemberExpression memberExpression = Expression.MakeMemberAccess(parameter, memberInfo);
BinaryExpression binaryExpression = Expression.Equal(memberExpression, Expression.Constant(22));
Expression<Func<Address, bool>> expr = Expression.Lambda<Func<Address, bool>>(binaryExpression, new ParameterExpression[] { parameter });
var query1 = context.Addresses.Where(expr.Compile());
foreach (var q in query1)
{
Console.WriteLine(q.AddressID+"\t"+q.AddressLine1);
}
//原生方式查询
var query2 = context.Addresses.Where(p => p.AddressID == 22);
foreach (var q in query2)
{
Console.WriteLine(q.AddressID + "\t" + q.AddressLine1);
}
}
System.Console.ReadKey();
}
SELECT
[Extent1].[AddressID] AS [AddressID],
[Extent1].[AddressLine1] AS [AddressLine1],
[Extent1].[AddressLine2] AS [AddressLine2],
[Extent1].[City] AS [City],
[Extent1].[StateProvinceID] AS [StateProvinceID],
[Extent1].[PostalCode] AS [PostalCode],
[Extent1].[rowguid] AS [rowguid],
[Extent1].[ModifiedDate] AS [ModifiedDate]
FROM [Person].[Address] AS [Extent1]
SELECT
[Extent1].[AddressID] AS [AddressID],
[Extent1].[AddressLine1] AS [AddressLine1],
[Extent1].[AddressLine2] AS [AddressLine2],
[Extent1].[City] AS [City],
[Extent1].[StateProvinceID] AS [StateProvinceID],
[Extent1].[PostalCode] AS [PostalCode],
[Extent1].[rowguid] AS [rowguid],
[Extent1].[ModifiedDate] AS [ModifiedDate]
FROM [Person].[Address] AS [Extent1]
WHERE 22 = [Extent1].[AddressID]
var query1 = context.Addresses.Where(expr);
这样用生成的SQL语句和第二种一模一样,能给我讲讲原因么?