0

私のインターフェースは

public interface IDisplayListQueue
{
    void BindQueueData();
    System.Collections.ArrayList QueueDataSource { get; set; }
}

リストに値を追加するページの読み込み

IDisplayListQueue dataEntryQueue;
dataEntryQueue.QueueDataSource.Add(new { QueueID = queue.QueueID, LinkText = queueName, Uid = sentinel });

ページが読み込まれた後、dataEntryQueue の QueueID などの値を見つけたいと思います。

だから、私はこのようなコードを書こうとしています

dataEntryQueue.QueueDataSource.Contains("122");

exits.QueueDataSource 値であっても、上記の ID を見つけることができません。

4

3 に答える 3

1

フィールドを含む独自のクラスを作成し、配列リストのinstedをQueueID, LinkText, Uid使用する必要がありますList<OwnClass>

于 2013-02-18T13:54:06.223 に答える
1

インターフェイスのインスタンスを直接作成することはできません。IDisplayListQueue を実装するオブジェクトを作成してから、このオブジェクトにアクセスする必要があります。

MSDNを参照してください。

于 2013-02-18T13:52:16.760 に答える
0

QueueIDプロパティを使用して新しい匿名型を作成していて、Containsメソッドでその ID に基づいてオブジェクトを検索する必要がありますよね? しかしContains、「122」が に一致する必要があることを知る方法はありませんQueueID。リスト内のさまざまなオブジェクトを比較できる唯一の方法は、それらの参照、メモリの場所によるものであり、それはあなたが求めているものではありません。

それで、あなたは何ができますか?Contains を使用する代わりに、LINQ メソッドを使用してAny、QueueID プロパティを明示的にチェックする方法を提供します。

if (dataEntryQueue.QueueDataSource
                  .Any(queueThingie => queueThingie.QueueID = "122"))
{
    // found it!
}

ただし、これは機能しません。なんで?なぜなら、ArrayListストアは、あなたがプロパティを持っているobjectことを知らないからです。queueThingieQueueID

それで、あなたは何ができますか?光沢のある新しい匿名型と古くて不格好な ArrayList を混在させないでください。必要な 3 つのプロパティを持つ単純なQueueThingieクラスを作成すると、LINQ を使用して目的のプロパティAnyを見つけることができます。実際、インターフェースをQueueThingie実装すれば、IEqualityComparerを使用することさえ可能になりますArrayList.Contains

于 2013-02-18T14:53:14.387 に答える