gpt4 book ai didi

c# - 使用 Linq Dynamic 分组

转载 作者:行者123 更新时间:2023-11-30 23:33:43 25 4
gpt4 key购买 nike

我想对从下拉列表中选择的值进行分组,但该值可以是日期时间或字符串,我只想提供一种情况。你有什么想法吗?

我的代码:

public class Personne
{
public String _NOM { get; set; }
public DateTime _DDN { get; set; }
public String _VILLE { get; set; }

public Personne(String nom, DateTime ddn, String ville)
{
this._NOM = nom;
this._DDN = ddn;
this._VILLE = ville;
}
}

这里是 buttonClick 事件:

List<Personne> _liste = new List<Personne>();
_liste.Add(new Personne("toto", new DateTime(1993, 3, 23), "Paris"));
_liste.Add(new Personne("tata", new DateTime(1993, 3, 23), "New-York"));
_liste.Add(new Personne("titi", new DateTime(1987, 2, 10), "Paris"));

var qry = _liste.AsQueryable().OrderBy(listeCritere.SelectedValue)
.GroupBy(listeCritere.SelectedValue, "It", null);

if (listeCritere.SelectedValue == "_DDN")
{
foreach (IGrouping<DateTime, Personne> item in qry)
{
Response.Write(item.Key + "<br/>");

foreach (Personne p in item)
{
Response.Write("&nbsp;&nbsp;&nbsp;&nbsp; Nom complet : " + p._NOM + "<br/>");
}
}
}
else
{
foreach (IGrouping<String, Personne> item in qry)
{
Response.Write(item.Key + "<br/>");

foreach (Personne p in item)
{
Response.Write("&nbsp;&nbsp;&nbsp;&nbsp; Nom complet : " + p._NOM + "<br/>");
}
}
}

最佳答案

你可以循环遍历 IEnumerable<Personne>相反,然后获取循环内键的正确类型:

var qry = _liste.AsQueryable().OrderBy(listeCritere.SelectedValue)
.GroupBy(listeCritere.SelectedValue, "It", null);

foreach (IEnumerable<Personne> item in qry)
{
if (item is IGrouping<DateTime, Personne>)
Response.Write(((IGrouping<DateTime, Personne>)item).Key + "<br/>");
else if (item is IGrouping<object, Personne>)
Response.Write(((IGrouping<object, Personne>)item).Key + "<br/>");

foreach (Personne p in item)
{
Response.Write("&nbsp;&nbsp;&nbsp;&nbsp; Nom complet : " + p._NOM + "<br/>");
}
}

您还可以将循环移动到通用函数:

public void ButtonClickHandler(object sender, EventArgs e)
{
var qry = _liste.AsQueryable().OrderBy(listeCritere.SelectedValue)
.GroupBy(listeCritere.SelectedValue, "It", null);

if (listeCritere.SelectedValue == "_DDN")
WritePersonneResponse<DateTime>(Response, qry);
else
WritePersonneResponse<string>(Response, qry);
}

public void WritePersonneResponse<T>(HttpResponse response, IQueryable qry)
{
foreach (IGrouping<T, Personne> item in qry)
{
response.Write(item.Key + "<br/>");

foreach (Personne p in item)
{
response.Write("&nbsp;&nbsp;&nbsp;&nbsp; Nom complet : " + p._NOM + "<br/>");
}
}
}

关于c# - 使用 Linq Dynamic 分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33806525/

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