如何将System.Data.Linq.Table <tentity>包装到泛型方法?</tentity>

时间:2013-02-21 16:28:57

标签: c# linq generics

protected void saveform<T>(System.Data.Linq.Table<T> table, bool submit) 
    where T : class
{
    try
    {
        using (DataContext dc = new DataContext())
        {
            var form = (from f in table
                        join r in dc.tbRecords on f.recordId equals r.recordId
                        where r.pID == pId
                        select new {f, r}).SingleOrDefault();
        ...

但是我在编译时遇到了这个错误信息:

  

&#39; T&#39;不包含&#39; recordId&#39;的定义没有延伸   方法&#39; recordId&#39;接受第一个类型&#39; T&#39;可能   发现(您是否缺少using指令或程序集引用?)

我该如何处理? 感谢。

1 个答案:

答案 0 :(得分:2)

你怎么知道T有'recordId'属性?它仅限于成为一个对象......

一种可能的解决方案是将您的实体包装在一个界面中:

public interface IRecord
{
    public int recordId { get; }
}

您可以使用部分类来使您的实体实现此接口。

然后,将方法的泛型类型约束到该接口,例如

protected void saveform<T>(System.Data.Linq.Table<T> table, bool submit) where T : IRecord