2012-06-13 147 views
2

从列表条目我有结构的列表:按名称获取

List<Form> xxx = new List<Form>(); 

我如何才能知道它是否包含特定名称标识任何形式,是这样的:

xxx.Contains() 
+1

你有什么迄今所做? – rikitikitik

回答

1

尝试使用函数findAll

List<Form> xxx = new List<Form>(); 
int count = xxx.FindAll(x => x.Name.Equals("YourFormName")).Count(); 
+0

,如果你数,你可以做'xxx.Count(x => x.Name.Equals(“YourFormName”))' –

+0

对,但我更喜欢显示FindAll函数为另一个使用返回ist :) – Aelios

+0

谢谢,这有助于发现是否存在。 – cuciacik

0
var result = list.Where(r => r.Name == "YourName").ToList(); 

编辑:(按codesparkle)

既然你正在检查是否有名称的形式在您的表单列表存在,您可能会收到COUN结果吨,看它是否大于0

if(result.Count > 0) 
{ 
//Form found in the list 
} 

在你的情况下更好的办法是使用Enumerable.Any

你可以这样做:

if (list.Any(r => r.Name == "YourName")) 
    { 
    //Form found in the list 
    } 

记住,你必须包括System.Linq;在你的使用陈述中。

+0

@Downvoter,喜欢评论? – Habib

+0

我没有downvote,但我会*发现它有用,如果你可以扩展你的答案(例如'bool contains = result.Count()> 0')并添加一个解释,可能链接到msdn ... – Adam

+1

@ codesparkle,感谢您的建议,我已经更新了答案 – Habib

0

你还没有真正显示你在做什么,但是这是你应该做的事情:

随着Contains,你只能检查指定的实例是否在列表中。相反,你可以使用Enumerable.Any方法来检查任意断言:

using System.Linq; 

// ... 

xxx.Any(item => item.Name == yourDesiredName); 
0

请尝试以下LINQ expression

var forms = from form in FormList 
      where form.Name == "A_FORM_NAME" 
      select form; 
-3

为什么你不”只需为每个表单定义一个属性,从另一个表单定义每个表单。

然后你就可以通过你的列表检查该属性,每个表单实例

+0

请包括一个代码示例来澄清你想说的话。对我而言,这个答案毫无意义。 – Adam

+0

更详细的提供代码示例 – AngeloBad

0

您可以循环并回到第一Form.Name符合搜索条件:

foreach (Form form in xxx) 
{ 
    if (form.Name == "Whatever") 
    { 
     return form.Name; 
    } 
} 
+0

downvoter,关注评论? –