gpt4 book ai didi

c# - 如何使用 Linq to Entities 动态检索特定子类型的所有记录?

转载 作者:行者123 更新时间:2023-11-30 12:52:59 25 4
gpt4 key购买 nike

我正在尝试获取数据库中指定类型的所有对象的列表。我以前在编译时知道类型时就这样做过,但现在我试图将一个类型传递给方法并让该方法返回该指定类型的所有记录,但我无法让它工作。我尝试了以下方法:

    public IList<WritingObject> GetBasicObjectsByProject(int projectId, Type oType)
{
var results = from o in _objects.AsQueryable
where o.Project.Id == projectId
&& o.GetType() == oType
select o;

return results.ToList<WritingObject>();
}

这不起作用,因为 Linq to Entities 不支持 GetType() 方法。接下来我尝试了

        var results = from o in _objects.AsQueryable
where o.Project.Id == projectId
&& o is oType
select o;

这不起作用,因为编译器声称 oType 不是已知类型。使用 typeof(oType)产生与执行 OfType<oType>() 相同的错误在 IQueryable 上.

我已经没有办法在不将其拆分为每个子类型的一种方法的情况下保持这种动态。有人有什么想法吗?

最佳答案

类似于: ?

var query = from o in _objects.AsQueryable()
where o.Project.Id == projectId
select o;

var ofType = typeof (Queryable).GetMethod("OfType").MakeGenericMethod(oType);
var list = (IQueryable)ofType.Invoke(
null, new object[] {query}).Cast<WritingObject>().ToList();

请注意,这也将包括其他子子类型。

关于c# - 如何使用 Linq to Entities 动态检索特定子类型的所有记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3332132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com