我有这个方法:
public ActionResult Complete(int id)
{
// Validate customer owns this order
bool isValid = storeDB.Orders.Any(
o => o.OrderId == id &&
o.Username == User.Identity.Name);
bool CheckOrderValue = storeDB.Orders.Any(o => o.OrderId == id && o.Total == 0);
int musicaID = storeDB.OrderDetails.Where(o => o.OrderId == id).Select(o => o.MusicaId).FirstOrDefault();
if (isValid && CheckOrderValue)
{
int idUser = 0;
if (Request.IsAuthenticated)
{
var membership = (WebMatrix.WebData.SimpleMembershipProvider)Membership.Provider;
idUser = membership.GetUserId(User.Identity.Name);
}
var musicas = storeDB.Musicas.Where(x => x.MusicaId == musicaID)
.Select(x => new { x.Nome, x.NomeArtista, x.genero, x.path })
.ToList().First();
var y = new UsuarioMusica()
{
UserId = idUser,
MusicaId = musicaID,
GeneroId = musicas.genero.GeneroId,
genero = musicas.genero,
Nome = musicas.Nome,
NomeArtista = musicas.NomeArtista,
path = musicas.path
};
if (ModelState.IsValid)
{
storeDB.UsuarioMusicas.Add(y);
storeDB.SaveChanges();
}
return View(id);
}
else
{
return View("Error");
}
}
我想在这一行获取一个 id 列表:
int musicaID = storeDB.OrderDetails.Where(o => o.OrderId == id)
.Select(o => o.MusicaId).FirstOrDefault();
在此之后,我需要将每个 ID 添加到数据库中。
我认为我需要使用列表 musicaID
创建一个 foreach
,但我不知道如何传递每个 ID 以添加到数据库中。
实际上,该方法只是添加第一个元素,我知道为什么,因为 FirstOrDefault
方法。
如何更改此设置以添加多个 ID?
最佳答案
您必须使用 foreach 循环并在添加所有元素时保存您的更改。例如这样:
public ActionResult Complete(int id)
{
// Validate customer owns this order
bool isValid = storeDB.Orders.Any(
o => o.OrderId == id &&
o.Username == User.Identity.Name);
bool CheckOrderValue = storeDB.Orders.Any(o => o.OrderId == id && o.Total == 0);
if (isValid && CheckOrderValue)
{
int idUser = 0;
if (Request.IsAuthenticated)
{
var membership = (WebMatrix.WebData.SimpleMembershipProvider)Membership.Provider;
idUser = membership.GetUserId(User.Identity.Name);
}
var musicaIDs = storeDB.OrderDetails.Where(o => o.OrderId == id).Select(o => o.MusicaId).ToList();
foreach (var musicaId in musicaIDs)
{
var musicas = storeDB.Musicas.Where(x => x.MusicaId == musicaId)
.Select(x => new { x.Nome, x.NomeArtista, x.genero, x.path }).ToList().First();
var y = new UsuarioMusica()
{
UserId = idUser,
MusicaId = musicaID,
GeneroId = musicas.genero.GeneroId,
genero = musicas.genero,
Nome = musicas.Nome,
NomeArtista = musicas.NomeArtista,
path = musicas.path
};
if (ModelState.IsValid)
{
storeDB.UsuarioMusicas.Add(y);
}
}
storeDB.SaveChanges();
return View(id);
}
else
{
return View("Error");
}
}
关于c# - 使用 LINQ 获取 ID 列表并添加到数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30240740/