【发布时间】:2018-01-10 13:17:32
【问题描述】:
我有以下通用方法,我需要能够在其中执行 LINQ Where 查询:
public static List<T> GetItems<T>(Guid parentId = new Guid()) where T : new()
{
var db = new SQLiteConnection(_dbPath);
List<T> result;
if (parentId != Guid.Empty)
{
result = db.Table<T>().Where(i => i.ParentId.Equals(parentId)).ToList();
}
else
{
result = db.Table<T>().ToList();
}
db.Close();
return result;
}
编译器不喜欢下面这行
result = db.Table<T>().Where(i => i.ParentId.Equals(parentId)).ToList();
错误:无法解析“ParentId”
是否可以在 LINQ 查询中以这种方式使用泛型?请注意,类型 T 的对象将始终具有 ParentId 属性。
【问题讨论】:
-
你能创建一个公开
ParentId的接口并将其用作泛型类型的约束吗? -
如果 T 有 ParentId -属性,你知道类型。至少它是具有该属性的接口。
-
错误是什么!!