我有实体类型、主键名称和主 ID 的 Guid。我想在 LinqToSql 中获取此类 Id 的元素。
model.GetTable<T>().Where(t => here equality );
我想我需要自己生成那个表达式,但我不知道如何:(
我有实体类型、主键名称和主 ID 的 Guid。我想在 LinqToSql 中获取此类 Id 的元素。
model.GetTable<T>().Where(t => here equality );
我想我需要自己生成那个表达式,但我不知道如何:(
我期待着,在搜索编译器代码生成之后,在 Reflector 中我发现了这个 lambda 的创建。
public static T GetById(Guid id)
{
Type entType = typeof(T);
if (!CheckTable(entType)) {
throw new TypeLoadException(string.Format(
"{0} is not Table Entity, has no attribute Table", entType.FullName));
}
string property = GetPrimaryKeyName(entType).Name;
ParameterExpression cs;
var lambda = Expression.Lambda<Func<Personal, bool>>(
Expression.Equal(
Expression.Property(
cs = Expression.Parameter(typeof(T), "p"),
entType.GetProperty(property).GetGetMethod()
),
Expression.Constant(id),
false,
typeof(Guid).GetMethod("Equals")
), new ParameterExpression[] { cs }
);
return Connection.Model.GetTable<T>().Single(lambda);
}
我需要的东西,但我有编译器异常:
错误 5 无法从用法中推断方法“System.Linq.Enumerable.Single(System.Collections.Generic.IEnumerable, System.Func)”的类型参数。尝试明确指定类型参数。D:\Projects\Own\Yabeda\Source\trunk\med\Yabeda.Med.Mvc\Data\Oper.cs 48 20 Yabeda.Med.Mvc
找不到此错误的含义!