2013-03-15 45 views
-1

如何获得每个列表条目的内容与textQuery.Text进行测试,并且如果它是命中记录,将被写入名为listResx的ListView中的四列中?在LINQ中查询/搜索列表(在某些情况下)

​​
+0

我很困惑,你问什么。 textQuery.Text在哪里?您希望使用哪个查询操作符(例如,我们在寻找什么,什么定义了“命中”)?我们的源数据在哪里? – theMayer 2013-03-15 21:51:51

+0

也许这可以帮助未来:http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b :-) – 2013-03-15 22:02:09

回答

1
var resultList = MasterList.Where(x => x.id == textQuery.Text || x.en == textQuery.Text || x.fr == textQuery.Text || x.es == textQuery.Text).ToList(); 

这应该给你小,从而匹配列表。你可以从那里拿走吗?

0
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(); 
+0

不幸的是,WinForms的ListView没有DataSource和DataBind ala WebForms。另外,'MasterList'不是数据源,而是'resources.Values' – 2013-03-15 21:52:08

0

试试这个:

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)); 
} 
相关问题