簡體   English   中英

使用LINQ查詢現有ListView項

[英]querying existing ListView items with LINQ

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);
}

我想要做的是查詢此ListView中的所有結果與textboxQuery輸入的textboxQuery 如果整個列表視圖中的任何字段包含來自textboxQuery的字符串,我希望它顯示在新的列表視圖中(比如listviewQueryresult)。 我有很多失敗的嘗試,但我知道它可以通過LINQ。

因為ListView.Items實現了IEnumerable ,但是沒有實現IEnumerable<T>你必須首先將其IEnumerable<ListViewItem>IEnumerable<ListViewItem> ,使用LINQ to Objects查詢它:

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

如果整個列表視圖中的任何字段包含來自textboxQuery的字符串,我希望它然后顯示在新的列表視圖中(比如listviewQueryresult)

為此,謂詞只是:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM