如何使用c#mvc获取表1中的所有id并保存到表2中?
我是这里的新手。我使用的是c#MVC5。如何使用c#mvc获取表1中的所有id并保存到表2中?,c#,asp.net,asp.net-mvc,linq,asp.net-mvc-5,C#,Asp.net,Asp.net Mvc,Linq,Asp.net Mvc 5,我是这里的新手。我使用的是c#MVC5。 我将尝试在表1中获取所有状态为“已拾取”的id,并保存到表2中 这是我的错误 无法将类型为“WhereSelectListIterator`2[ChenvelIntl.Core.Domain.Packages.Package,System.Int32]”的对象强制转换为类型为“System.IConvertible” 这是我的密码。但它不起作用。有人能帮我解决这个问题吗 var package = _packageService.GetAll().Whe
我将尝试在表1中获取所有状态为“已拾取”的id,并保存到表2中 这是我的错误 无法将类型为“WhereSelectListIterator`2[ChenvelIntl.Core.Domain.Packages.Package,System.Int32]”的对象强制转换为类型为“System.IConvertible” 这是我的密码。但它不起作用。有人能帮我解决这个问题吗
var package = _packageService.GetAll().Where(x => x.Status == "Picked-up");
var shipmentItem = new ShipmentItem
{
ShipmentId = model.ShipmentId
};
if (package != null)
{
shipmentItem.PackageId = Convert.ToInt32(package.Select(x => x.Id));
}
_shipmentItemService.Add(shipmentItem);
return RedirectToAction("addshipmentitem");
package
变量将包含一个WhereSelectListIterator
或一个链接到多个包的对象
将其更改为.First()
,例如
var package = _packageService.GetAll().First(x => x.Status == "Picked-up");
然后在下面:
// If package.Id is not an Int32 already...
shipmentItem.PackageId = Convert.ToInt32(package.Id);
如果需要全部,请按如下方式更改代码:
var packages = _packageService.GetAll().Where(x => x.Status == "Picked-up").ToArray().Where(x => x != null).ToArray();
foreach(var package in packages) {
var shipmentItem = new ShipmentItem
{
ShipmentId = model.ShipmentId,
PackageId = Convert.ToInt32(package.Id)
};
_shipmentItemService.Add(shipmentItem);
}
return RedirectToAction("addshipmentitem");
就这么做吧:
var shipmentItems= _packageService.GetAll()
.Where(x => x.Status == "Picked-up")
.Select(x=>new ShipmentItem(){ShipmentId = x.ShipmentId , PackageId=int.Pars(x.Id)});
if(shipmentItems.Any())
_shipmentItemService.Add(shipmentItems);
return RedirectToAction("addshipmentitem");
如果_shipmentItemService.Add()只收到一个要添加的shipmentItem,请执行以下操作:
shipmentItems.ToList().ForEach(x=>_shipmentItemService.Add(x))
您将获得一个整数数组packageId
然后循环抛出数组并逐个添加装运项目。。
我希望它能奏效
foreach (var packageId in packageIds)
{
var shipmentItem = new ShipmentItem
{
ShipmentId = model.ShipmentId,
PackageId = Convert.ToInt32(packageId)
};
_shipmentItemService.Add(shipmentItem);
}
如果您将函数拆分并将
var
更改为实际类型,您将立即看到您的问题:
IEnumerable<Package> fetchedPackages = _packageService.GetAll();
IEnumerable<Package> pickedUpPackages = fetchedPackages
.Where(package => package.Status == "Picked-up");
注意:如果没有此类pickedUpPackageId,则无论何时出现错误,该值都将为零,请务必在哪一行告诉我们。您好,谢谢您的回复。如果我把它改成。首先我得到1个值。我需要获取状态为“已拾取”的所有id,并将所有id保存在表2中。@DenmarkDelPuso问题中的每个答案旁边都应该有一个复选标记,单击它将把答案标记为已接受。
IEnumerable<Package> fetchedPackages = _packageService.GetAll();
IEnumerable<Package> pickedUpPackages = fetchedPackages
.Where(package => package.Status == "Picked-up");
IEnumerable<int> pickedUpPackageIds = pickedupPPages
.Select(pickedUpPackage => pickedUpPackage.Id);
shipmentItem.PackageId = Convert.ToInt32(pickedUpPackageIds);
int pickedUpPackageId = _packageService.GetAll()
.Where(package => package.Status == "Picked-up")
.Select(package => package.Id)
.FirstOrDefault(); // or SingleOrDefault
shipmentItem.PackageId = Convert.ToInt32(pickedUpPackage.Id);