gpt4 book ai didi

c# - 将 C# 表达式与 ADO.NET 数据表相结合

转载 作者:太空宇宙 更新时间:2023-11-03 12:05:38 25 4
gpt4 key购买 nike

我有返回类型可以不同的通用查询。因此,我无法使用 TVF,因此我正在使用数据表。

我也想扩展数据表的查询。

我正在尝试通过以下方式做到这一点:

var data = GetDataTable($"SELECT * FROM {tablename}").AsEnumerable().AsQueryable().GetFilteredList(filters);

下面是GetFilteredList的函数定义:

IQueryable<T> GetFilteredList<T>(this IQueryable<T> items, List<PostedFilter> filters)

函数 GetDataTable 和 GetFilteredList 中的逻辑是正确的,因为它们已经使用了多年。然而,它们是分开使用的,因为它们来自不同的库。 filters 参数包含字符串,这些字符串是查询属性的名称。这样可以在执行之前扩展查询。这对于类型化 EDMX 对象的静态 mvc 查询非常有效。

但是,此代码不适用于我的数据表。它不会产生任何错误,但过滤器也不会减少数据。 (除其他原因外,我认为这是因为在调用 AsQueryable 函数之前查询已具体化)

有谁知道我可以创建我要实现的逻辑的方法吗? (我的意思是创建一个大型查询,该查询仅在查询完全建立后才具体化)

最佳答案

会不会是 GetDataTable().AsEnumarable() 返回 DataRow 的列表,而 GetFilteredList 被键入到某种实体类?

如果是这种情况,那么您应该以某种方式将“过滤器”转换为 WHERE (Filter1 = 'value1') AND ... 形式的字符串,并将其放入要传递给 GetDataTable() 的 SQL 字符串中.

关于c# - 将 C# 表达式与 ADO.NET 数据表相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55161201/

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