0
プロパティ( 'Key'と 'Value')をフロントエンドからバックエンドサービスに渡しています。 )は、特定のSQL Serverデータベーステーブルの特定の列(obj.key)に格納され、オブジェクトに変換されたすべての一致する行の一覧を返します。テーブルの列に値が含まれていてオブジェクトのリストが返されている場合のLINQルックアップ
しかし、このコードはすべての場合に機能しません。ほとんどの場合、「オブジェクトのインスタンスに設定されていないオブジェクト」エラーが返されます。
agencies = _unitOfWork.RatingAgencyRepository.GetByType(p => p.GetType().GetProperty(filter.key)
.GetValue(p, null).ToString().ToLower().Contains(filter.value.ToLower().Trim())).ToList();
私はLINQとEFと本当に慣れていないんだので、任意の結果なしで一日のために同僚によって書かれたこのコードを修正しようとしてきました。
ありがとうございます。
RatingAgencyRepository.GetByTypeメソッドについて詳しく知りません。いずれにせよ、それはかなり醜い声明です。リポジトリクラスを変更するアクセス権があれば、単にフィルタオブジェクトをパラメータとして受け取り、それを使ってそのフィルタプロパティとフィルタ値を持つオブジェクトのリストを取得し、それをキャストしたり変換したりするメソッドの作成をお勧めします必要なオブジェクトの種類。 結論は、コードを読みやすく保守したいということです。この線は私にとって非常に明確で直感的ではありません。 – Torrents
これはgetByTypeメソッドによって、背後にあるコードである: '公共のIEnumerable GetByType(機能) {リターンDbSet.Where()(を.ToList)。 } ' –
spectre85
サンプルコードで2つの引数を渡しており、その定義には1つしかかからないため、同じであってはなりません。 – NetMage