gpt4 book ai didi

c# - LINQ 动态库 : How to extract count and list from IQueryable

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

我已经开始尝试使用 LINQ DynamicLibrary。我正在尝试用几个或一个动态 LINQ 查询替换一堆 LINQ 语句。我现有的静态查询如下:

private List<TicketChartData> GenerateImpl(IList<ServiceItem> myList)
{
var output = from ticket in myList
group ticket by ticket.Region into grouped
orderby grouped.Count() descending
select new TicketChartData(grouped.Key, grouped.Count(), grouped.ToList());
return output.ToList();
}

如您所见,我的工作单元是ServiceItem。这一切正常,并为我提供了按 Region 分组的结果集。使用 DynamicLibrary 我的尝试是能够按任何有效的动态字段进行分组(我将单独处理任何验证)。因此,我尝试使用 DynamicLibrary 编写相同的查询,但不是很成功。这是当然不能编译的新方法:

private List<TicketChartData> GenerateImpl(IList<ServiceItem> myList, string field)
{
IQueryable<ServiceItem> queryableList = myList.AsQueryable<ServiceItem>();
IQueryable groupedList = queryableList.GroupBy(field,"it").
OrderBy("Key descending").
Select("new (Key as Key)"); // Not what i need
return output.ToList();
}

我无法从分组中提取 CountList。我该怎么做呢?我花了相当多的时间寻找解决方案。如果可能的话,我希望能够避免使用反射。我在以下链接的前面有一些指示,但这对我的实际问题没有帮助。在此先感谢您的帮助。

System.LINQ.Dynamic: Select(" new (...)") into a List<T> (or any other enumerable collection of <T>)

最佳答案

对于Count可以这样写:

private List GenerateImpl(IList myList, string field)
{
IQueryable queryableList = myList.AsQueryable();
IQueryable groupedList = queryableList.GroupBy(field,"it").
OrderBy("Key descending").
Select("new (Key as Key, Count() as Count)");

// Note: IQueryable doesn't have ToList() implementation - only IEnumerable
return output.ToList(); // will not work
}

对于 List - 您可能需要将自定义实现添加到 DynamicLibrary...查看 Contains() 方法是如何完成的 here

关于c# - LINQ 动态库 : How to extract count and list from IQueryable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5182771/

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