LINQ を使用して一般的な辞書をクエリし、その結果を ListView (WebForms) のデータソースとして使用しています。
簡略化されたコード:
Dictionary<Guid, Record> dict = GetAllRecords();
myListView.DataSource = dict.Values.Where(rec => rec.Name == "foo");
myListView.DataBind();
私はそれがうまくいくと思っていましたが、実際にはSystem.InvalidOperationExceptionをスローします:
ID が「myListView」の ListView には、ICollection を実装するか、AllowPaging が true の場合にデータ ソースのページングを実行できるデータ ソースが必要です。
それを機能させるために、私は次のことに頼らなければなりませんでした:
Dictionary<Guid, Record> dict = GetAllRecords();
List<Record> searchResults = new List<Record>();
var matches = dict.Values.Where(rec => rec.Name == "foo");
foreach (Record rec in matches)
searchResults.Add(rec);
myListView.DataSource = searchResults;
myListView.DataBind();
最初の例を機能させるための小さな落とし穴はありますか?
(この質問のタイトルとして何を使用すればよいかわかりませんでした。より適切なものに自由に編集してください)