gpt4 book ai didi

c# - 使用 LINQ 查询现有的 ListView 项

转载 作者:太空狗 更新时间:2023-10-29 23:08:46 26 4
gpt4 key购买 nike

我通过这些循环填充的 ListView 导致填充了四列

// Create a ResXResourceReader
ResXResourceReader rdr0 = new ResXResourceReader(textPath1.Text + ".resx");
ResXResourceReader rdr1 = new ResXResourceReader(textPath1.Text + ".es.resx");
ResXResourceReader rdr2 = new ResXResourceReader(textPath1.Text + ".fr.resx");

foreach (DictionaryEntry d in rdr0)
{
TransResource x = new TransResource();
x.id = d.Key.ToString();
x.en = d.Value.ToString();
resources.Add(x.id, x);
}

foreach (DictionaryEntry d in rdr1)
{
TransResource x = resources[d.Key.ToString()];
x.fr = d.Value.ToString();
}

foreach (DictionaryEntry d in rdr2)
{
TransResource x = resources[d.Key.ToString()];
x.es = d.Value.ToString();
}

foreach (TransResource x in resources.Values)
{
string[] row = { x.id, x.en, x.fr, x.es };
var listViewItem = new ListViewItem(row);
listResx.Items.Add(listViewItem);
}

我想做的是根据 textboxQuery 中输入的内容查询此 ListView 中的所有结果。如果整个 ListView 中的任何字段包含来自 textboxQuery 的字符串,我希望它显示在新的 ListView 中(比如说 listviewQueryresult)。我对此进行了多次失败的尝试,但我知道可以通过 LINQ 实现。

最佳答案

因为 ListView.Items工具 IEnumerable , 但不执行 IEnumerable<T>你必须把它转换到IEnumerable<ListViewItem>首先,使用 LINQ to Objects 查询它:

var results = listResx.Items.Cast<ListViewItem>()
.Where(x => YourPredicate(x));

If any field in the entire listview contains the string from textboxQuery I want it to then be displayed in a new listview (lets say listviewQueryresult)

为此,谓词将只是:

var results = listResx.Items.Cast<ListViewItem>()
.Where(x => x.Text.Contains(textboxQuery));

关于c# - 使用 LINQ 查询现有的 ListView 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15434194/

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