我有一个家长班和一些孩子班,像这样:
public class TableParent
{
public string Nombre { get; set; }
public int Parent_id{ get; set; }
}
public class T1
{
public string Nombre { get; set; }
public int Parent_id{ get; set; }
public int id{ get; set; }
}
public class T2
{
public string Nombre { get; set; }
public int Parent_id{ get; set; }
public int id{ get; set; }
}
public class T3
{
public string Nombre { get; set; }
public int Parent_id{ get; set; }
public int id{ get; set; }
}
我有一个list<int>
,并且从表tableParent
中选择了Parent_id。我需要从T1,T2,T3中选择列表中包含Parent_id的那些记录。
我可以像这样为每个表做一个方法:
public static async Task RunPromotionAddresId(List<int> promociones)
{
string ConnexionOrigen = "datasource..."
List<T2> listaPromos = new List<T2>();
using (var db = new MigrateModel(ConnexionOrigen))
{
db.Configuration.LazyLoadingEnabled = false;
listaPromos = db.t2.Where(r => promociones.Contains(r.Parent_Id)).ToList();
}
}
它工作正常。我想做一个泛型方法被调用三遍:
public static async Task GetFromDatabase<T>(List<int> promociones) where T : class
{
string ConnexionOrigen = "datasource"
List<T> listaPromos = new List<T>();
using (var db = new MigrateModel(ConnexionOrigen))
{
db.Configuration.LazyLoadingEnabled = false;
listaPromos = db.Set<T>().Where(r => promociones.Contains(r.Parent_id)).ToList();
}
}
但是.. Contains(r.Parent_id)
中出现错误:
T没有为Parent_id定义
如何将Contains Method
与泛型一起使用。或者我该如何替换?