「ADDRESS」、「OLD_ADDRESS」、「CITY」、「OLD_CITY」、「STATE」、「OLD_STATE」などの列名を持つテーブルがあります。エンティティフレームワーククエリを使用してこの情報を取得し、モデルをASP.NETMVCビューに渡します。
この情報を次のような表形式で表示する必要があります
古いフィールドと新しいフィールドを比較する必要があり、値に違いがある場合はそれを表示します。このようなことをするための最良の方法は何ですか?モデルをループしてif(item.ADDRESS == item.OLD_ADDRESS){....}を比較することで、これを通常の方法で構築できますが、この特定のテーブルには約100列あり、基本的に50"if"と記述します。条件。linqクエリから返される行は1つだけであると想定します。
レガシーデータベースからこの情報を読み取っていますが、再設計できません。提案を事前に感謝します。
-----------------------------編集1------------------- ---------これが私がこれまでに試したことです-
@foreach (var BusRels in Model)
{
foreach (var busrel in BusRels.GetType().GetProperties())
{
if (busrel.Name.IndexOf("OLD") > -1) {
{
var fieldVal = busrel.GetValue(BusRels, null);
if ( fieldVal != null)
{
if (!fieldVal.ToString().Trim().IsEmpty())
{
<tr>
@{
//BusRels.GetType().GetProperties().Where(p => p.Name == fieldVal.
var displayName = busrel.GetCustomAttributes(typeof(System.ComponentModel.DisplayNameAttribute), false)
.Cast<System.ComponentModel.DisplayNameAttribute>()
.FirstOrDefault().DisplayName;
}
<td>@displayName</td>
<td>@busrel.GetValue(BusRels, null)</td>
<td>???????</td>
</tr>
}
}
}
}
}
ここでの問題は、古い値の横に表示される「新しい」値を取得できないように見えることだと思います。