gpt4 book ai didi

c# - 在 ObservableCollection 中分组数据

转载 作者:行者123 更新时间:2023-11-30 21:57:46 25 4
gpt4 key购买 nike

我正在尝试按创建日期(月和年)对数据进行分组。如果特定组已经存在,我如何遍历组的 ObservableCollection,如果存在,则将数据添加到具有相同月年 ID 的组中?如果具有日期的组不存在,程序应创建一个组并将数据添加为第一项。我有两个数据模型类 - 数据和组:

public class Data
{
public string Name { get; set; }
public double Amount { get; set; }
public static DateTimeOffset Date { get; set; }

private string ID = Date.ToString("MM/yyyy");
}

public class Group
{
public ObservableCollection<Data> DataGroup { get; set; }
private string ID;

public Group(string id)
{
ID = id;
}
}

下面是我想象的 AddData 方法的工作方式:

public async Task AddData(Data data)
{
var id = data.ID;
Group newGroup = new Group(id);
foreach (Group group in _groups)
{
if (/*what kind of condition should i put here?*/)
{
if (group.ID == id)
{
newGroup.DataGroup.Add(data);
}
}
else
{
_groups.Add(newGroup);
newGroup.DataGroup.Add(data);
}
}
await saveDataAsync();
}

现在,有没有办法检查 _groups 集合是否有等于 newGroup(相同 ID)的项目?

最佳答案

一个可能的解决方案是通过 FirstOrDefault 获取现有组.如果不存在,则创建一个并将其添加到 _groups 集合中。无论哪种方式,在此之后您将获得对该组的相关引用,并且可以添加数据。

例子:

public async Task AddData(Data data)
{
var id = data.ID;

//Will return null if no such group exists
Group relevantGroup = _groups.FirstOrDefault(f => f != null && f.ID == id);
if(relevantGroup == null)
{
//Didn't have one so we add the a new group and assign it to the variable
relevantGroup = new Group(id);
_groups.Add(relevantGroup);
}
//This now always references the correct group, just add your data item
relevantGroup.Add(data);

await saveDataAsync();
}

编辑:添加了一个 null 引用检查。

关于c# - 在 ObservableCollection<T> 中分组数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30528301/

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