我有一个数据库,其中所有表都有一个名为ID
的主键。
我不想为我的所有表制作多个GetObjectForId,我想制作一个采用IQueryable和Type的通用方法,然后尽可能尝试从IQueryable选择中获取一个对象。
我在想这样的事情:
public IQueryable<Type> GetObjectForIdInCollection(IQueryable selection, Type t, int id)
{
return selection.Cast<T>().Where(c => c.ID == id).FirstOrDefault()
}
显然,这段代码是完全错误的,但是您知道我正在尝试执行的操作。
这是一个好主意吗?我该如何实现这种方法?
最佳答案
您可以创建一个基本接口,您的所有实体都可以实现:
public interface IIdObject
{
int Id { get; set; }
}
// ...
public T GetObjectForIdInCollection<T>(IQueryable<T> selection, int id)
where T : IIdObject
{
return selection.FirstOrDefault(c => c.Id == id);
}
但我认为这样做不值得。
关于c# - LINQ where未知类型的表达,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40300588/