6

C# でリストを使用する方法を学習しようとしています。チュートリアルはたくさんありますが、レコードを含むリストを表示する方法を実際に説明しているものはありません。

これが私のコードです:

class ObjectProperties
{
    public string ObjectNumber { get; set; }
    public string ObjectComments { get; set; }
    public string ObjectAddress { get; set; }
}

List<ObjectProperties> Properties = new List<ObjectProperties>();
ObjectProperties record = new ObjectProperties
    {
        ObjectNumber = txtObjectNumber.Text,
        ObjectComments = txtComments.Text,
        ObjectAddress = addressCombined,
    };
Properties.Add(record);

メッセージボックスに値を表示したい。現在、情報がリストに入っていることを確認しています。また、リスト内の値を検索し、それに関連するその他の情報を取得する方法も学びたいと考えています。たとえば、オブジェクト番号で項目を検索し、リストにある場合はアドレスを返します。 . それが違いを生む場合、私はWPFも使用しています。どんな助けでも大歓迎です。ありがとうございました。

4

5 に答える 5

5

最良の方法はToString、クラスでオーバーライドし、使用string.Joinしてすべてのレコードを結合することです。

var recordsAsString = string.Join(Environment.NewLine, 
            Properties.Select(p => p.ToString()));
MessagBox.Show(recordsAsString);

可能な実装は次のToStringとおり です。

class ObjectProperties
{
    public string ObjectNumber { get; set; }
    public string ObjectComments { get; set; }
    public string ObjectAddress { get; set; }

    public override string ToString() 
    {
        return "ObjectNumber: " 
              + ObjectNumber 
              + " ObjectComments: " 
              + ObjectComments 
              + " ObjectAddress: " 
              + ObjectAddress;
    }
}

また、リスト内の値を検索し、それに関連するその他の情報を取得する方法も学びたいと考えています。たとえば、オブジェクト番号で項目を検索し、リストにある場合はアドレスを返します。 .

を検索するにはいくつかの方法がありますList<T>。ここでは 2 つを示します。

String numberToFind = "1234";
String addressToFind = null;
// using List<T>.Find method
ObjectProperties obj = Properties.Find(p => p.ObjectNumber == numberToFind);
//using Enumerable.FirstOrDefault method (add using System.Linq)
obj = Properties.FirstOrDefault(p => p.ObjectNumber == numberToFind);
if (obj != null)
    addressToFind = obj.ObjectAddress;
于 2012-06-15T13:43:22.450 に答える
2

List<T>クラスは を実装IEnumerable<T>します。これにより、リストをクエリするための非常に便利なメソッドを多数使用できます。

と の MSDN ドキュメントを参照することをお勧めしList<T>ますIEnumerable<T>。利用可能なメソッドを調べて、例を見てください。特定の質問がある場合は、SO に戻ってください。

例として尋ねたことを達成する方法は次のとおりです。

string address = myList
                 .Where(x=>x.ObjectNumber=="A123")
                 .Select(x=>x.ObjectAddress)
                 .First();
于 2012-06-15T13:43:26.290 に答える
2

リスト内の項目を表示するには、リストを反復処理して情報を取得します。

StringBuilder sb = new StringBuilder();

foreach (ObjectProperties op in Properties) 
{
    sb.Append(op.ObjectNumber + "\n");
}

sb.ToString(); // show this in messagebox
于 2012-06-15T13:42:24.427 に答える
2

何をしたいかによります。

データを見つけたい場合は、次のコードを使用します。

List<ObjectProperties> Properties = new List<ObjectProperties>();
var result = Properties.Where(n => n.ObjectNumber.Equals('yourVariableHere'));
于 2012-06-15T13:42:33.033 に答える
1

リストを取得したら、foreachループを使用してリストをループし、その方法で値を出力できます。

linqを使用してリストをクエリし、必要な値を返すこともできます。

例えば:

    properties.Where(x=>x.ObjectNumber == 10).FirstOrDefault()

これにより、ObjectNumberが10である最初のレコードが返されます。

さらに詳しい説明が必要な場合はお知らせください。

于 2012-06-15T13:40:58.993 に答える