将System.Data.Linq.Table <T>传递给通用函数

Jas*_*son 6 c# generics

我正在尝试制作一个接受的通用函数System.Data.Linq.Table<T>.

通用功能

 public int Get<T>(MyDataContext db, System.Data.Linq.Table<T> table, string PropertyValue) where T: IMatchable
 {
     T prop = table.FirstOrDefault<T>(p => p.Name.ToLower() == PropertyValue.ToLower());  
     if (prop != null)
     {
        return prop.ID;
     }
 }
Run Code Online (Sandbox Code Playgroud)

接口,以便我可以访问ID属性

public interface IMatchable
{
    int ID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的错误

类型'T'必须是引用类型才能在泛型类型或方法'System.Data.Linq.Table'中将其用作参数'TEntity'

我不确定我做错了什么.

The*_*ter 6

尝试指定 where T: class, IMatchable

由于System.Data.Linq.Table有约束where TEntity : class你需要确保它T也是一个引用类型.