gpt4 book ai didi

c# - 如果 C#/WPF 中的 ObservableCollection 中存在项目,则查找数字的索引

转载 作者:行者123 更新时间:2023-12-02 12:20:03 26 4
gpt4 key购买 nike

在下面的代码中,我检查 ObservableCollection 中是否存在某个项目,如果存在,我想获取它的索引,以便我可以将该项目移动到顶部,但我无法计算出来吧。

我的目标:

public class RecentFile
{
public string FileName { get; set; }
public string DateAdded { get; set; }
}

查找项目索引的代码:

if (recentFilesObservableCollection.Any(f => f.FileName == "MyFileName")) {

foreach (RecentFile file in recentFilesObservableCollection) {
if (file.FileName == "MyFileName") {
var x = RecentFilesDataGrid[(recentFilesObservableCollection.IndexOf(file)];
}
}
}

如果该项目存在,获取索引号的最佳方法是什么?

最终我需要做的是......

  1. 检查项目是否存在
  2. 如果确实将其移至列表顶部

最佳答案

检查项目是否存在。如果它确实获取了该项目,则找到其索引。从那里移动它。

//Check if item exists
if (recentFilesObservableCollection.Any(f => f.FileName == "MyFileName")) {
//If it does, get item
var file = recentFilesObservableCollection.First(f => f.FileName == "MyFileName");
//grab its index
var index = recentFilesObservableCollection.IndexOf(file);
if (index > 0)
//move it to the top of the list
recentFilesObservableCollection.Move(index, 0);
}

另一种替代方案,可以通过更少的枚举实现相同的结果。

var item = recentFilesObservableCollection
.Select((file, index) => new { file, index })
.FirstOrDefault(f => f.file.FileName == "MyFileName"));
if(item != null && item.index > 0) // or if(item?.index > 0)
recentFilesObservableCollection.Move(item.index, 0);

关于c# - 如果 C#/WPF 中的 ObservableCollection 中存在项目,则查找数字的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50896235/

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