通用类型和LINQ

时间:2015-04-28 16:41:42

标签: c# database linq generics

我用两个字段编写两个公共类(test1,test2),e。 G。 '名称'和'姓氏' 然后,我想将数据库中的数据填充到此对象中。 我的第一次尝试是:

public List<T> FillFromDB<T>()
{
   IQueryable<T> query =
      from tbl in _table
      select new T {Name=tbl.name, Surname=tbl.surname}
}

但是我不知道这些领域。我能做什么?谢谢你的帮助。

1 个答案:

答案 0 :(得分:5)

您可以创建Test1Test2将从中继承的公共接口(或类),然后在FillFromDb的类型参数上指定必要的约束。

public interface IHasName
{
    public string Name { get; set; }
    public string Surname { get; set; }
}
public class Test1 : IHasName
{
    public string Name { get; set; }
    public string Surname { get; set; }
}
public class Test2 : IHasName
{
    public string Name { get; set; }
    public string Surname { get; set; }
}
public List<T> FillFromDB<T>()
    where T : new(), IHasName
{
   IQueryable<T> query =
      from tbl in _table
      select new T {Name=tbl.name, Surname=tbl.surname}
}