2

そのため、ASP.NET MVCを使い始めたばかりで、答えが見つからないという問題が発生しました。

SQLデータベースからいくつかのデータを取得し、次のコードを使用してビューに送信します。

var listingsQuery = (from s in db.tblListings select s).OrderBy(s => s.listingID).Skip(100).Take(25);
var listings = listingsQuery.ToList();

return View(listings);

これはうまく機能しますが、結果のリストに値を追加したいと思います。基本的に私がやろうとしていることは次のようなものです:

foreach (var item in listings)
{
    this.Add("propertyType", "Home");
}

しかし、明らかにそれは機能しません。ToList()の代わりにToArray()を試してみましたが、どこにも行きませんでした。

4

2 に答える 2

6

Listコレクションの各オブジェクトに新しいプロパティを追加しますか?その場合は、リスト内のオブジェクトタイプを継承する新しいタイプを作成し(listingsQuery変数にカーソルを合わせると、タイプは<>シンボル内にあります)、新しいプロパティを追加できます。

public class MyNewType : ExistingTableType
{
    public string PropertyType { get; set; }
}

次に、クエリ内で、プロパティを次の新しいタイプに投影します。

var listingsQuery = (from s in db.tblListings  
                     orderby s.listingID
                     select new NewType
                     {
                         listingID = s.listingID,
                         someOtherField = s.someOtherField
                     }
                    ).Skip(100).Take(25);

これで、各レコードを循環して値を割り当てることができます。

foreach(var record in listings)
{
   record.ProperyType = "Home";
}

これを行う他の方法もあります(EFを使用していると仮定します)。たとえば、生のSQLを使用した場合、結果の型を新しい型に直接キャストできます(各フィールドにマップを作成する必要はありません)。あなたが始めました。

于 2012-07-10T00:25:37.217 に答える
1

リストコレクションに新しい行を追加する場合は、リストを作成する必要があります。これの代わりに追加します。追加

リストコレクションの値を変更する場合は、次のことを行う必要があります。

     foreach(var item in listings)
     {
       item.PropertyName = value;
     }
于 2012-07-09T23:52:44.780 に答える