1

最初のフィールドのテキストが何らかの値と一致するデータベースから2つのフィールドを選択する方法があります

public static List<List<string>> SelectForSearch(string letter)
{
    var data = (from p in model.City
                where p.Name.StartsWith(letter)
                select new List<string> { p.Name, p.CountryName }).ToList();
    return data;
}

しかし、次のようなリストが返されます。

[0][0]オーストラリア
[0][1]バリナ

[1][0]ベリー
[1][1]オーストラリア

[2][0]オーストラリア
[2][1]ベンディゴ
...

国と都市の位置には、次のような静的インデックスはありません。

[0][0]バリナ
[0][1]オーストラリア

[1][0]ベリー
[1][1]オーストラリア

[2][0]ベンディゴ
[2][1]オーストラリア
...

4

1 に答える 1

2

あなたの問題は、select ステートメントで、Name と CountryName を使用して型を作成する代わりに、文字列のリストを作成していることです。リスト初期化子を使用すると、値を配置してリストを作成するときに値を渡すことができます。{ }この機能を偶然使用していると、名前が最初の要素で国名が最初の要素である文字列のリストが作成されます。 2 番目の要素。あなたがやりたいことは、もっと似ています:

var data = (from p in model.City
            where p.Name.StartsWith(letter)
            select new { City = p.Name, CountryName = p.CountryName }).ToList();
return data;

これは、戻り値の型を宣言したいので良くない匿名型を使用しています。したがって、実際にはストレージ用のクラスを作成する必要があります。次に例を示します。

public class CityCountryPair 
{
    public String City { get; set; }
    public String CountryName { get; set; }
}

その後、あなたの方法は

public static List<CityCountryPair> SelectForSearch(string letter)
{
    var data = (from p in model.City
                where p.Name.StartsWith(letter)
                select new CityCountryPair() { City = p.Name, 
                                               CountryName = p.CountryName 
                                              }).ToList();
    return data;
}
于 2012-07-27T20:15:01.193 に答える