嘗試使用 except 從串列中排除專案。但是,以下代碼對我不起作用,即我的串列仍然包含它應該排除的記錄。有什么明顯的我做錯了嗎?我的回圈有問題嗎?順便說一句,此代碼的逆代碼起作用,即在運行時匹配時插入正確的記錄。
[HttpPost]
public JsonResult InsertActivities([FromBody] List<MemberData> customers)
{
var mData =_context.MemberData.Select(x => x.RunTime).ToList();
foreach (var item in mData)
{
var exclude = customers.Where(x => x.RunTime == item).ToList();
var list = customers.Except(exclude).ToList();
foreach (var data in list)
{
_context.MemberData.Add(data);
}
}
int insertedRecords = _context.SaveChanges();
return Json(insertedRecords);
}
uj5u.com熱心網友回復:
首先確保你有如下模型設計:
public class MemberData:IEquatable<MemberData>
{
public int Id { get; set; }
public string RunTime { get; set; }
public bool Equals(MemberData other)
{
if (other is null)
return false;
return this.RunTime == other.RunTime;
}
public override bool Equals(object obj) => Equals(obj as MemberData);
public override int GetHashCode() => (RunTime).GetHashCode();
}
然后更改您的代碼,如下所示:
public JsonResult InsertActivities([FromBody] List<MemberData> customers)
{
//hard-coded the value...
//customers = new List<MemberData>()
//{
// new MemberData(){RunTime="aa"},
// new MemberData(){RunTime="bb"},
// new MemberData(){RunTime="ee"},
//}; //hard-coded the value...
var mData = _context.MemberData.ToList();
var list = customers.Except(mData);
foreach (var item in list)
{
foreach (var data in list)
{
_context.MemberData.Add(data);
}
}
int insertedRecords = _context.SaveChanges();
return Json(insertedRecords);
}
筆記:
為了成功地將資料插入資料庫,如果您的模型包含主鍵,請確保資料的(after did 除外 operation)鍵與現有資料庫資料不重復。或者你可以像我在上面的代碼中所做的那樣,不為主鍵設定值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/404845.html
標籤:
