6

私は国のデータベースが好きです、

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

このデータ ソースを次のように取得します。

   DB.Countries.ToList();

私がやりたいことは、新しく追加された国がすでに存在するかどうかを確認することです

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

newAddedCountryしかし、 (string) をに変換する方法がわかりませんSystem.Collections.Generic.List<Country>

4

7 に答える 7

14
if(DB.Countries.Any(c => c.Country == newAddedCountry))
{
    // exists ..
}
于 2013-04-22T11:09:30.267 に答える
6

Enumerable.Anyメソッドを使用できます。

シーケンスに要素が含まれているかどうかを判断します。

if( DB.Countries.Any( n => n.Country == newAddedCountry ))
于 2013-04-22T11:10:07.033 に答える
4

このようなことを試してください

if(DB.Countries.Any(c => c.CountryName == newAddedCountry.CountryName ))
{
    // exists ..
}
于 2013-04-22T11:10:38.207 に答える
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))
于 2013-04-22T11:10:26.120 に答える
0

これを正しく覚えていれば、contains は Equals メソッドを使用してインスタンスを比較します。したがって、Countries クラスに Equals オーバーライド メソッドを実装する必要があります。そして、いずれにせよ - あなたは String と Countries オブジェクトのインスタンスを比較しようとしているので、もちろんそれらは適切に比較されません。

私はLINQソリューションを試してみます:

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

またはx == newAddedCountryそれが単なるリストの場合。

于 2013-04-22T11:13:48.287 に答える