在LINQ中查询/搜索列表(在某些情况下)
本文关键字:情况下 搜索 LINQ 查询 列表 | 更新日期: 2023-09-27 18:04:03
我如何获得每个列表条目的内容要针对textQuery.Text
进行测试,如果它是一个命中,将被写入名为listResx
的ListView中的四列?
List<TransResource> MasterList = new List<TransResource>();
foreach (TransResource x in resources.Values)
{
MasterList.Add(x);
}
...
public class TransResource
{
public string id {get; set;}
public string en {get; set;}
public string fr {get; set;}
public string es {get; set;}
}
var resultList = MasterList.Where(x => x.id == textQuery.Text || x.en == textQuery.Text || x.fr == textQuery.Text || x.es == textQuery.Text).ToList();
这应该会给你更小的匹配结果列表。你能从那里接手吗?
string keyword = textQuery.Text;
var hitsQuery = from i in MasterList
where i.en == keyword ||
i.es == keyword ||
i.fr == keyword ||
i.id == keyword
select i;
var hits = hitsQuery.ToList();
hist
为List<TransResource>
。你可以用它来填充你的ListView
,例如使用DataSource
属性:
listResx.DataSource = hits;
listResx.DataBind();
试试这个:
var matches = resources.Values.Where(x=>x.id==txtQuery.Text ||
x.en==txtQuery.Text ||
x.fr==txtQuery.Text ||
x.es==txtQuery.Text);
foreach(var item in matches)
{
string displayItem = item.id + " " + item.en;
listResx.Items.Add(new ListViewItem(displayItem));
}
或者使用更少的代码行:
foreach(var item in resources.Values.Where(x=>x.id==txtQuery.Text ||
x.en==txtQuery.Text ||
x.fr==txtQuery.Text ||
x.es==txtQuery.Text))
{
string displayItem = item.id + " " + item.en;
listResx.Items.Add(new ListViewItem(displayItem));
}