我想在我的Windows窗体应用程序中使用Linq to SQL。
本地数据库中的数据从Web服务获取或在本地创建。
如果从Web服务获取实体,则它具有ExternalId设置
我经常需要使用如下代码来获取他们的ExternalId:
var user = (from u in db.User
where u.ExternalId == userExternalId
select u).First();
var location = (from l in db.Location
where l.ExternalId == locationExternalId
select l).First();
所以我想把它改成一个通用函数,如下所示:
internal TEntity FetchByExternalId<TEntity>(System.Data.Linq.Table<TEntity> table,
int externalId)
where TEntity: IExternalStorable
{
return (from obj in table
where obj.ExternalId == externalId
select (TEntity)obj).First();
}
不幸的是这样的函数无法编译:
如何在泛型函数中使用linq?
答案 0 :(得分:2)
考虑利用框架而不是自己动手:
Location location = db.Locations
.First(loc => loc.ExternalId == locationExternalId);
答案 1 :(得分:1)
1:部分课程确实应该有效。你检查过命名空间是否相同?你遇到了什么错误?
2:应该是
where TEntity : class, IExternalStorable
因为否则它可能是另一个无法实例化的接口