MVC 4を使用しており、Code First Migrationsを使用してデータベースを更新する必要があります。私がやろうとしているのは、データベーステーブルからレコードを選択し、それらをユーザーが選択できるドロップダウンリストに挿入することです。
理解できないエラーがあります:
LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression.
コントローラー:
public ActionResult Addnew()
{
var dba = new DefaultConnection();
var query = dba.blob.Select(c => new SelectListItem
{
Value = c.id.ToString(),
Text = c.name_company,
Selected = c.id.Equals(3)
});
var model = new Companylist
{
xpto = query.AsEnumerable()
};
return View(model);
}
使用する場合...
Value = c.id + "",
の代わりに
Value = c.id.ToString(),
編集
このオプションでは、データベースからすべてのデータを取得するわけではありません
デリゲートを使用するだけです:
var query = dba.blob.Select(delegate(blob c)
{
return new SelectListItem
{
Value = c.id.ToString(),
Text = c.name_company,
Selected = c.id.Equals(3)
};
});
以下は、SelectListとして表示する方法です。
_ public List<BlobEntity> GetBlobs()
{
List<BlobEntity> blobs = null;
using (var db = new MyDBEntities())
{
blobs = (from b in db.blobs
where b.id > 0 //Example filter
select new BlobEntity
{
ID = b.id,
CompanyName = b.name_company
}
).ToList();
}
return blobs;
}
public static SelectList GetBlobsSelectList()
{
MyBL theBL = new MyBL();
List<BlobEntity> blobEntites = theBL.GetBlobs();
var listItems = blobEntites
.Select(x => new SelectListItem { Text = x.CompanyName,
Value = x.ID.ToString()
})
.ToList();
SelectList blobsSelectList = new SelectList(listItems.AsEnumerable(), "Value", "Text");
return blobsSelectList;
}
public class BlobEntity
{
public int ID { get; set; }
public string CompanyName { get; set; }
}
_
すべてのレコードとすべての列を選択している場合、現在受け入れられている回答(@VarunKによる)は問題ありません。ただし、そうでない場合は、ToList()
を適用する前に、必要な列とレコードを使用して投影することをお勧めします。
なぜLINQ to Entitiesがメソッド 'System.String ToString()?を認識しないのかを見てください。
その他の参照: Linqからエンティティへのintから文字列への変換に関する問題