2

私はこの質問に正しい名前を付け、私が何を意味するのかを正しく説明できることを望んでいます。DBから入力されたViewModelのリスト<>があり、コントローラーで、アイテムのプロパティ値の1つによってそのリストの特定の単一アイテムにアクセスし、別のプロパティ値を変更しようとしています。

たとえば、私のモデルにはいくつかのプロパティがあります。

    public int Id { get; set; }
    public bool IsChanged { get; set; }

'Id'でアクセスし、'IsChanged'プロパティをそのように変更したい(わからない部分の周りに#を使用している)

    list.#(select item in the list by it's Id)#.IsChanged = true;

私はこれが理にかなっていることを願っています、そしてあなたがチュートリアルへの良いリンクを持っているかもしれないとしても、ありがとう:-)

4

2 に答える 2

3

私が正しく理解してSingleいれば、一致するものがない場合に使用するとnullエラーが発生するので、一致するものがないSingleOrDefault場合にnullを返すaを使用することをお勧めします...これはおそらく安全なアプローチです。

if(list != null)
{
  var item = list.SingleOrDefault(x => x.Id == 1);
  if(item !=null)
  {
    item.IsChanged = true;
  }
  else
  {
   // code to handle this case
  }
}
else
{
  // code to handle this case
}

そして、これは私がLINQで読んだ中で断然最高の本です... C#4.0を使用したオブジェクトへのLINQ

乾杯...

于 2012-04-06T22:04:35.793 に答える
2
list.Single(x => x.Id == 123).IsChanged = true;

Single()メソッドは、クエリを満たすアイテムが1つだけであることを想定しているため、IDが一意であることを確認する必要があります。

クエリを満たすアイテムがない場合は、ArgumentNullExceptionがスローされます。複数のアイテムがクエリを満たす場合、がInvalidOperationExceptionスローされます。

アクセスしようとしているプロパティが参照型である場合は、インスタンス化されていることを確認するために追加のチェックが必要になる場合があります。

于 2012-04-06T21:52:21.180 に答える