gpt4 book ai didi

c# - LINQ group by 查询使用反射(reflect)的属性名称

转载 作者:太空狗 更新时间:2023-10-29 23:58:56 24 4
gpt4 key购买 nike

我想用特定对象的公共(public)属性填充下拉列表,我做得很好。但是现在当用户从下拉列表中选择值时,我希望它按该列对数据库表结果进行分组。我试过使用 LINQ,但我只能弄清楚如何按实例变量属性而不是反射属性显式分组。这是我的方法——传入的参数是属性的字符串名称。例如,如果用户想按 Customer.Country 分组,它将是“Country”,如果用户想按 Customer.State 分组,它将是“State”。但目前我已经硬编码为按“州”分组,因为我无法弄清楚如何使用通过我的 LINQ 查询传入的字符串值

private void DisplayReportAction(string category)
{
if (!string.IsNullOrEmpty(category))
{
SelectedCategory = category;
_summaries.Clear();

foreach (var custGroup in _customerInterface.CustomerInterface.GetAllCustomers().GroupBy(c => c.State)
.Select(group => new
{
Category = group.Key,
Count = group.Count()
})
.OrderBy(x => x.Category))
{
_summaries.Add(new CustomerReportSummaryViewModel(custGroup.Category, custGroup.Count));
}

ReportVisibility = Visibility.Visible;
}
}

最佳答案

如果你正在使用 LINQ to Objects,你可以使用反射,例如你可以使用这个:

_customerInterface.CustomerInterface.GetAllCustomers()
.GroupBy(c => c.GetType().GetProperty(category).GetValue(c, null))

如果您使用的是 Linq To Sql,那么另一种方法是使用动态查询,请查看此链接

http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx

关于c# - LINQ group by 查询使用反射(reflect)的属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19540674/

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