如何在列表中使用“包含”?

时间:2013-04-22 11:08:10

标签: c# linq list

我有国家数据库赞,

Country
-------
England
Germany
Italy
...

我将此数据源视为

   DB.Countries.ToList();

我想要做的是检查新添加的国家/地区是否已存在,
只是喜欢,

if(DB.Countries.ToList().Contains(newAddedCountry))
{
 ..............
}

但我不知道如何将newAddedCountry(字符串)转换为System.Collections.Generic.List<Country>

7 个答案:

答案 0 :(得分:14)

if(DB.Countries.Any(c => c.Country == newAddedCountry))
{
    // exists ..
}

答案 1 :(得分:6)

您可以使用Enumerable.Any方法;

  

确定序列是否包含任何元素。

if( DB.Countries.Any( n => n.Country == newAddedCountry ))

答案 2 :(得分:4)

尝试这样的事情

if(DB.Countries.Any(c => c.CountryName == newAddedCountry.CountryName ))
{
    // exists ..
}

答案 3 :(得分:2)

您可以在Country课程中将国家/地区名称与您的媒体资源进行比较。类似的东西:

if(DB.Countries.ToList().Any(r=> r.Name == newAddedCountry))
                                 ^^^^^^
                                 Field/Property name holding the Name of Country

如果你想比较字符串忽略大小写,那么:

if(DB.Countries.ToList()
               .Any(r=> r.Name.Equals(newAddedCountry, StringComparison.InvariantCultureIgnoreCase))

答案 4 :(得分:1)

使用Country类的属性可能更容易,如下所示:

if (db.Countries.Select(x => x.Name).ToList().Contains(countryName))
{
    ...
}

if (db.Countries.Any(x => x.Name == countryName))
{
    ...
}

效率更高。

答案 5 :(得分:1)

假设Country为列名:

if(DB.Countries.ToList().Any(c => c.Country == newAddedCountry))
{ 
    //Do something
}

答案 6 :(得分:0)

如果我记得这个权利,则包含使用Equals方法来比较实例。因此,您需要在Countries类中实现Equals覆盖方法。而且无论如何 - 你试图比较String和Countries对象实例,所以当然不能正确地比较它们。

我会尝试使用LINQ解决方案:

List<Country> countries = DB.Countries.ToList();
if (countries.Any(x => x.column == newAddedCountry)) {
    ...
}

x == newAddedCountry如果它只是一个列表。