foreach中不能SaveChanges()吗?不允许启动新事务,因为有其他线程正在该会话中运行。

时间:2022-09-19 23:38:41
因为一些计算值必须在读取上一条记录的属性,所以我把SaveChanges()写在了foreach中,然后出错:
不允许启动新事务,因为有其他线程正在该会话中运行。mvc+ef环境。有什么办法能解决吗?

7 个解决方案

#1


上点代码吧这么说 不太明白

#2


foreach里是可以使用savechange的,可能是你代码逻辑导致的这个问题。

#3


引用 1 楼 yzf86211861 的回复:
上点代码吧这么说 不太明白
没上代码是因为代码太恐怖了,大家看完之后马上会跑题。
public ActionResult 计算跨度()
{
    var 序号 = 库.历史数据.Max(m => m.序号);
    foreach (var 成员 in 库.历史数据.Where(w => w.序号 == null).OrderBy(o => o.期数))
    {
        序号++;
        成员.序号 = 序号;
        库.SaveChanges();
        成员.红1跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 1 || f.红二 == 1 || f.红三 == 1 || f.红四 == 1 || f.红五 == 1 || f.红六 == 1)).序号);
        成员.红2跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 2 || f.红二 == 2 || f.红三 == 2 || f.红四 == 2 || f.红五 == 2 || f.红六 == 2)).序号);
        成员.红3跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 3 || f.红二 == 3 || f.红三 == 3 || f.红四 == 3 || f.红五 == 3 || f.红六 == 3)).序号);
        成员.红4跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 4 || f.红二 == 4 || f.红三 == 4 || f.红四 == 4 || f.红五 == 4 || f.红六 == 4)).序号);
        成员.红5跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 5 || f.红二 == 5 || f.红三 == 5 || f.红四 == 5 || f.红五 == 5 || f.红六 == 5)).序号);
        成员.红6跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 6 || f.红二 == 6 || f.红三 == 6 || f.红四 == 6 || f.红五 == 6 || f.红六 == 6)).序号);
        成员.红7跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 7 || f.红二 == 7 || f.红三 == 7 || f.红四 == 7 || f.红五 == 7 || f.红六 == 7)).序号);
        成员.红8跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 8 || f.红二 == 8 || f.红三 == 8 || f.红四 == 8 || f.红五 == 8 || f.红六 == 8)).序号);
        成员.红9跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 9 || f.红二 == 9 || f.红三 == 9 || f.红四 == 9 || f.红五 == 9 || f.红六 == 9)).序号);
        成员.红10跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 10 || f.红二 == 10 || f.红三 == 10 || f.红四 == 10 || f.红五 == 10 || f.红六 == 10)).序号);
        成员.红11跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 11 || f.红二 == 11 || f.红三 == 11 || f.红四 == 11 || f.红五 == 11 || f.红六 == 11)).序号);
        成员.红12跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 12 || f.红二 == 12 || f.红三 == 12 || f.红四 == 12 || f.红五 == 12 || f.红六 == 12)).序号);
        成员.红13跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 13 || f.红二 == 13 || f.红三 == 13 || f.红四 == 13 || f.红五 == 13 || f.红六 == 13)).序号);
        成员.红14跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 14 || f.红二 == 14 || f.红三 == 14 || f.红四 == 14 || f.红五 == 14 || f.红六 == 14)).序号);
        成员.红15跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 15 || f.红二 == 15 || f.红三 == 15 || f.红四 == 15 || f.红五 == 15 || f.红六 == 15)).序号);
        成员.红16跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 16 || f.红二 == 16 || f.红三 == 16 || f.红四 == 16 || f.红五 == 16 || f.红六 == 16)).序号);
        成员.红17跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 17 || f.红二 == 17 || f.红三 == 17 || f.红四 == 17 || f.红五 == 17 || f.红六 == 17)).序号);
        成员.红18跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 18 || f.红二 == 18 || f.红三 == 18 || f.红四 == 18 || f.红五 == 18 || f.红六 == 18)).序号);
        成员.红19跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 19 || f.红二 == 19 || f.红三 == 19 || f.红四 == 19 || f.红五 == 19 || f.红六 == 19)).序号);
        成员.红20跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 20 || f.红二 == 20 || f.红三 == 20 || f.红四 == 20 || f.红五 == 20 || f.红六 == 20)).序号);
        成员.红21跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 21 || f.红二 == 21 || f.红三 == 21 || f.红四 == 21 || f.红五 == 21 || f.红六 == 21)).序号);
        成员.红22跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 22 || f.红二 == 22 || f.红三 == 22 || f.红四 == 22 || f.红五 == 22 || f.红六 == 22)).序号);
        成员.红23跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 23 || f.红二 == 23 || f.红三 == 23 || f.红四 == 23 || f.红五 == 23 || f.红六 == 23)).序号);
        成员.红24跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 24 || f.红二 == 24 || f.红三 == 24 || f.红四 == 24 || f.红五 == 24 || f.红六 == 24)).序号);
        成员.红25跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 25 || f.红二 == 25 || f.红三 == 25 || f.红四 == 25 || f.红五 == 25 || f.红六 == 25)).序号);
        成员.红26跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 26 || f.红二 == 26 || f.红三 == 26 || f.红四 == 26 || f.红五 == 26 || f.红六 == 26)).序号);
        成员.红27跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 27 || f.红二 == 27 || f.红三 == 27 || f.红四 == 27 || f.红五 == 27 || f.红六 == 27)).序号);
        成员.红28跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 28 || f.红二 == 28 || f.红三 == 28 || f.红四 == 28 || f.红五 == 28 || f.红六 == 28)).序号);
        成员.红29跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 29 || f.红二 == 29 || f.红三 == 29 || f.红四 == 29 || f.红五 == 29 || f.红六 == 29)).序号);
        成员.红30跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 30 || f.红二 == 30 || f.红三 == 30 || f.红四 == 30 || f.红五 == 30 || f.红六 == 30)).序号);
        成员.红31跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 31 || f.红二 == 31 || f.红三 == 31 || f.红四 == 31 || f.红五 == 31 || f.红六 == 31)).序号);
        成员.红32跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 32 || f.红二 == 32 || f.红三 == 32 || f.红四 == 32 || f.红五 == 32 || f.红六 == 32)).序号);
        成员.红33跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 33 || f.红二 == 33 || f.红三 == 33 || f.红四 == 33 || f.红五 == 33 || f.红六 == 33)).序号);
        成员.蓝跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 < 序号 && f.蓝 == 成员.蓝).序号 - 1);
    }
    库.SaveChanges();
    return RedirectToAction("默认");
}

#4


var 序号 = 库.历史数据.Max(m => m.序号);
    foreach (var 成员 in 库.历史数据.Where(w => w.序号 == null).OrderBy(o => o.期数))
    {
        序号++;
var 成员=库.成员表.first(序号)
        成员.红1跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 1 || f.红二 == 1 || f.红三 == 1 || f.红四 == 1 || f.红五 == 1 || f.红六 == 1)).序号);
        成员.红2跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 2 || f.红二 == 2 || f.红三 == 2 || f.红四 == 2 || f.红五 == 2 || f.红六 == 2)).序号);
        成员.红3跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 3 || f.红二 == 3 || f.红三 == 3 || f.红四 == 3 || f.红五 == 3 || f.红六 == 3)).序号);
        成员.红4跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 4 || f.红二 == 4 || f.红三 == 4 || f.红四 == 4 || f.红五 == 4 || f.红六 == 4)).序号);
        成员.红5跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 5 || f.红二 == 5 || f.红三 == 5 || f.红四 == 5 || f.红五 == 5 || f.红六 == 5)).序号);
        成员.红6跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 6 || f.红二 == 6 || f.红三 == 6 || f.红四 == 6 || f.红五 == 6 || f.红六 == 6)).序号);
        成员.红7跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 7 || f.红二 == 7 || f.红三 == 7 || f.红四 == 7 || f.红五 == 7 || f.红六 == 7)).序号);
        成员.红8跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 8 || f.红二 == 8 || f.红三 == 8 || f.红四 == 8 || f.红五 == 8 || f.红六 == 8)).序号);
        成员.红9跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 9 || f.红二 == 9 || f.红三 == 9 || f.红四 == 9 || f.红五 == 9 || f.红六 == 9)).序号);
        成员.红10跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 10 || f.红二 == 10 || f.红三 == 10 || f.红四 == 10 || f.红五 == 10 || f.红六 == 10)).序号);
        成员.红11跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 11 || f.红二 == 11 || f.红三 == 11 || f.红四 == 11 || f.红五 == 11 || f.红六 == 11)).序号);
        成员.红12跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 12 || f.红二 == 12 || f.红三 == 12 || f.红四 == 12 || f.红五 == 12 || f.红六 == 12)).序号);
        成员.红13跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 13 || f.红二 == 13 || f.红三 == 13 || f.红四 == 13 || f.红五 == 13 || f.红六 == 13)).序号);
        成员.红14跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 14 || f.红二 == 14 || f.红三 == 14 || f.红四 == 14 || f.红五 == 14 || f.红六 == 14)).序号);
        成员.红15跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 15 || f.红二 == 15 || f.红三 == 15 || f.红四 == 15 || f.红五 == 15 || f.红六 == 15)).序号);
        成员.红16跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 16 || f.红二 == 16 || f.红三 == 16 || f.红四 == 16 || f.红五 == 16 || f.红六 == 16)).序号);
        成员.红17跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 17 || f.红二 == 17 || f.红三 == 17 || f.红四 == 17 || f.红五 == 17 || f.红六 == 17)).序号);
        成员.红18跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 18 || f.红二 == 18 || f.红三 == 18 || f.红四 == 18 || f.红五 == 18 || f.红六 == 18)).序号);
        成员.红19跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 19 || f.红二 == 19 || f.红三 == 19 || f.红四 == 19 || f.红五 == 19 || f.红六 == 19)).序号);
        成员.红20跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 20 || f.红二 == 20 || f.红三 == 20 || f.红四 == 20 || f.红五 == 20 || f.红六 == 20)).序号);
        成员.红21跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 21 || f.红二 == 21 || f.红三 == 21 || f.红四 == 21 || f.红五 == 21 || f.红六 == 21)).序号);
        成员.红22跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 22 || f.红二 == 22 || f.红三 == 22 || f.红四 == 22 || f.红五 == 22 || f.红六 == 22)).序号);
        成员.红23跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 23 || f.红二 == 23 || f.红三 == 23 || f.红四 == 23 || f.红五 == 23 || f.红六 == 23)).序号);
        成员.红24跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 24 || f.红二 == 24 || f.红三 == 24 || f.红四 == 24 || f.红五 == 24 || f.红六 == 24)).序号);
        成员.红25跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 25 || f.红二 == 25 || f.红三 == 25 || f.红四 == 25 || f.红五 == 25 || f.红六 == 25)).序号);
        成员.红26跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 26 || f.红二 == 26 || f.红三 == 26 || f.红四 == 26 || f.红五 == 26 || f.红六 == 26)).序号);
        成员.红27跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 27 || f.红二 == 27 || f.红三 == 27 || f.红四 == 27 || f.红五 == 27 || f.红六 == 27)).序号);
        成员.红28跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 28 || f.红二 == 28 || f.红三 == 28 || f.红四 == 28 || f.红五 == 28 || f.红六 == 28)).序号);
        成员.红29跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 29 || f.红二 == 29 || f.红三 == 29 || f.红四 == 29 || f.红五 == 29 || f.红六 == 29)).序号);
        成员.红30跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 30 || f.红二 == 30 || f.红三 == 30 || f.红四 == 30 || f.红五 == 30 || f.红六 == 30)).序号);
        成员.红31跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 31 || f.红二 == 31 || f.红三 == 31 || f.红四 == 31 || f.红五 == 31 || f.红六 == 31)).序号);
        成员.红32跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 32 || f.红二 == 32 || f.红三 == 32 || f.红四 == 32 || f.红五 == 32 || f.红六 == 32)).序号);
        成员.红33跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 33 || f.红二 == 33 || f.红三 == 33 || f.红四 == 33 || f.红五 == 33 || f.红六 == 33)).序号);
        成员.蓝跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 < 序号 && f.蓝 == 成员.蓝).序号 - 1);
库.SaveChanges();
    }
    

不知道这样行不行

#5


foreach (var 成员 in 库.历史数据.Where(w => w.序号 == null).OrderBy(o => o.期数))

先不淡你for里面的代码,光以上这一句就非常影响性能,不应该这样写

 foreach (var t in 你获取到的结果)

应该改为

var q = 你获取到的结果
 foreach (var t in q)

#6


foreach (var 成员 in 结果))
    {
        序号++;
        成员.序号 = 序号;
        成员.红1跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 1 || f.红二 == 1 || f.红三 == 1 || f.红四 == 1 || f.红五 == 1 || f.红六 == 1)).序号);
        成员.红2跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 2 || f.红二 == 2 || f.红三 == 2 || f.红四 == 2 || f.红五 == 2 || f.红六 == 2)).序号);
        成员.红3跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 3 || f.红二 == 3 || f.红三 == 3 || f.红四 == 3 || f.红五 == 3 || f.红六 == 3)).序号);
        成员.红4跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 4 || f.红二 == 4 || f.红三 == 4 || f.红四 == 4 || f.红五 == 4 || f.红六 == 4)).序号);
        成员.红5跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 5 || f.红二 == 5 || f.红三 == 5 || f.红四 == 5 || f.红五 == 5 || f.红六 == 5)).序号);
        成员.红6跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 6 || f.红二 == 6 || f.红三 == 6 || f.红四 == 6 || f.红五 == 6 || f.红六 == 6)).序号);
        成员.红7跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 7 || f.红二 == 7 || f.红三 == 7 || f.红四 == 7 || f.红五 == 7 || f.红六 == 7)).序号);
        成员.红8跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 8 || f.红二 == 8 || f.红三 == 8 || f.红四 == 8 || f.红五 == 8 || f.红六 == 8)).序号);
        成员.红9跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 9 || f.红二 == 9 || f.红三 == 9 || f.红四 == 9 || f.红五 == 9 || f.红六 == 9)).序号);
        成员.红10跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 10 || f.红二 == 10 || f.红三 == 10 || f.红四 == 10 || f.红五 == 10 || f.红六 == 10)).序号);
        成员.红11跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 11 || f.红二 == 11 || f.红三 == 11 || f.红四 == 11 || f.红五 == 11 || f.红六 == 11)).序号);
        成员.红12跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 12 || f.红二 == 12 || f.红三 == 12 || f.红四 == 12 || f.红五 == 12 || f.红六 == 12)).序号);
        成员.红13跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 13 || f.红二 == 13 || f.红三 == 13 || f.红四 == 13 || f.红五 == 13 || f.红六 == 13)).序号);
        成员.红14跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 14 || f.红二 == 14 || f.红三 == 14 || f.红四 == 14 || f.红五 == 14 || f.红六 == 14)).序号);
        成员.红15跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 15 || f.红二 == 15 || f.红三 == 15 || f.红四 == 15 || f.红五 == 15 || f.红六 == 15)).序号);
        成员.红16跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 16 || f.红二 == 16 || f.红三 == 16 || f.红四 == 16 || f.红五 == 16 || f.红六 == 16)).序号);
        成员.红17跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 17 || f.红二 == 17 || f.红三 == 17 || f.红四 == 17 || f.红五 == 17 || f.红六 == 17)).序号);
        成员.红18跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 18 || f.红二 == 18 || f.红三 == 18 || f.红四 == 18 || f.红五 == 18 || f.红六 == 18)).序号);
        成员.红19跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 19 || f.红二 == 19 || f.红三 == 19 || f.红四 == 19 || f.红五 == 19 || f.红六 == 19)).序号);
        成员.红20跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 20 || f.红二 == 20 || f.红三 == 20 || f.红四 == 20 || f.红五 == 20 || f.红六 == 20)).序号);
        成员.红21跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 21 || f.红二 == 21 || f.红三 == 21 || f.红四 == 21 || f.红五 == 21 || f.红六 == 21)).序号);
        成员.红22跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 22 || f.红二 == 22 || f.红三 == 22 || f.红四 == 22 || f.红五 == 22 || f.红六 == 22)).序号);
        成员.红23跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 23 || f.红二 == 23 || f.红三 == 23 || f.红四 == 23 || f.红五 == 23 || f.红六 == 23)).序号);
        成员.红24跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 24 || f.红二 == 24 || f.红三 == 24 || f.红四 == 24 || f.红五 == 24 || f.红六 == 24)).序号);
        成员.红25跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 25 || f.红二 == 25 || f.红三 == 25 || f.红四 == 25 || f.红五 == 25 || f.红六 == 25)).序号);
        成员.红26跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 26 || f.红二 == 26 || f.红三 == 26 || f.红四 == 26 || f.红五 == 26 || f.红六 == 26)).序号);
        成员.红27跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 27 || f.红二 == 27 || f.红三 == 27 || f.红四 == 27 || f.红五 == 27 || f.红六 == 27)).序号);
        成员.红28跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 28 || f.红二 == 28 || f.红三 == 28 || f.红四 == 28 || f.红五 == 28 || f.红六 == 28)).序号);
        成员.红29跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 29 || f.红二 == 29 || f.红三 == 29 || f.红四 == 29 || f.红五 == 29 || f.红六 == 29)).序号);
        成员.红30跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 30 || f.红二 == 30 || f.红三 == 30 || f.红四 == 30 || f.红五 == 30 || f.红六 == 30)).序号);
        成员.红31跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 31 || f.红二 == 31 || f.红三 == 31 || f.红四 == 31 || f.红五 == 31 || f.红六 == 31)).序号);
        成员.红32跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 32 || f.红二 == 32 || f.红三 == 32 || f.红四 == 32 || f.红五 == 32 || f.红六 == 32)).序号);
        成员.红33跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 33 || f.红二 == 33 || f.红三 == 33 || f.红四 == 33 || f.红五 == 33 || f.红六 == 33)).序号);
        成员.蓝跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 < 序号 && f.蓝 == 成员.蓝).序号 - 1);
        库.SaveChanges();
    }

#7


1.你可以先将便利数据查询出来寄存到List里,ToLsit() 方法,然后便利,提交事物更改
2.如果只追寻结果的话,你可以将SaveChanges() 放在循环之外,统一提交,类似遍历来拼接修改语句,遍历完了再提交
3.你可以在外层重新定义一个连接对象,更改用这个对象,和查询的 库 分开,利用 你定义的 “库”查询,再定义一个“库2”,来库2.SaveChanges();

#1


上点代码吧这么说 不太明白

#2


foreach里是可以使用savechange的,可能是你代码逻辑导致的这个问题。

#3


引用 1 楼 yzf86211861 的回复:
上点代码吧这么说 不太明白
没上代码是因为代码太恐怖了,大家看完之后马上会跑题。
public ActionResult 计算跨度()
{
    var 序号 = 库.历史数据.Max(m => m.序号);
    foreach (var 成员 in 库.历史数据.Where(w => w.序号 == null).OrderBy(o => o.期数))
    {
        序号++;
        成员.序号 = 序号;
        库.SaveChanges();
        成员.红1跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 1 || f.红二 == 1 || f.红三 == 1 || f.红四 == 1 || f.红五 == 1 || f.红六 == 1)).序号);
        成员.红2跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 2 || f.红二 == 2 || f.红三 == 2 || f.红四 == 2 || f.红五 == 2 || f.红六 == 2)).序号);
        成员.红3跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 3 || f.红二 == 3 || f.红三 == 3 || f.红四 == 3 || f.红五 == 3 || f.红六 == 3)).序号);
        成员.红4跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 4 || f.红二 == 4 || f.红三 == 4 || f.红四 == 4 || f.红五 == 4 || f.红六 == 4)).序号);
        成员.红5跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 5 || f.红二 == 5 || f.红三 == 5 || f.红四 == 5 || f.红五 == 5 || f.红六 == 5)).序号);
        成员.红6跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 6 || f.红二 == 6 || f.红三 == 6 || f.红四 == 6 || f.红五 == 6 || f.红六 == 6)).序号);
        成员.红7跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 7 || f.红二 == 7 || f.红三 == 7 || f.红四 == 7 || f.红五 == 7 || f.红六 == 7)).序号);
        成员.红8跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 8 || f.红二 == 8 || f.红三 == 8 || f.红四 == 8 || f.红五 == 8 || f.红六 == 8)).序号);
        成员.红9跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 9 || f.红二 == 9 || f.红三 == 9 || f.红四 == 9 || f.红五 == 9 || f.红六 == 9)).序号);
        成员.红10跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 10 || f.红二 == 10 || f.红三 == 10 || f.红四 == 10 || f.红五 == 10 || f.红六 == 10)).序号);
        成员.红11跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 11 || f.红二 == 11 || f.红三 == 11 || f.红四 == 11 || f.红五 == 11 || f.红六 == 11)).序号);
        成员.红12跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 12 || f.红二 == 12 || f.红三 == 12 || f.红四 == 12 || f.红五 == 12 || f.红六 == 12)).序号);
        成员.红13跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 13 || f.红二 == 13 || f.红三 == 13 || f.红四 == 13 || f.红五 == 13 || f.红六 == 13)).序号);
        成员.红14跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 14 || f.红二 == 14 || f.红三 == 14 || f.红四 == 14 || f.红五 == 14 || f.红六 == 14)).序号);
        成员.红15跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 15 || f.红二 == 15 || f.红三 == 15 || f.红四 == 15 || f.红五 == 15 || f.红六 == 15)).序号);
        成员.红16跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 16 || f.红二 == 16 || f.红三 == 16 || f.红四 == 16 || f.红五 == 16 || f.红六 == 16)).序号);
        成员.红17跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 17 || f.红二 == 17 || f.红三 == 17 || f.红四 == 17 || f.红五 == 17 || f.红六 == 17)).序号);
        成员.红18跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 18 || f.红二 == 18 || f.红三 == 18 || f.红四 == 18 || f.红五 == 18 || f.红六 == 18)).序号);
        成员.红19跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 19 || f.红二 == 19 || f.红三 == 19 || f.红四 == 19 || f.红五 == 19 || f.红六 == 19)).序号);
        成员.红20跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 20 || f.红二 == 20 || f.红三 == 20 || f.红四 == 20 || f.红五 == 20 || f.红六 == 20)).序号);
        成员.红21跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 21 || f.红二 == 21 || f.红三 == 21 || f.红四 == 21 || f.红五 == 21 || f.红六 == 21)).序号);
        成员.红22跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 22 || f.红二 == 22 || f.红三 == 22 || f.红四 == 22 || f.红五 == 22 || f.红六 == 22)).序号);
        成员.红23跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 23 || f.红二 == 23 || f.红三 == 23 || f.红四 == 23 || f.红五 == 23 || f.红六 == 23)).序号);
        成员.红24跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 24 || f.红二 == 24 || f.红三 == 24 || f.红四 == 24 || f.红五 == 24 || f.红六 == 24)).序号);
        成员.红25跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 25 || f.红二 == 25 || f.红三 == 25 || f.红四 == 25 || f.红五 == 25 || f.红六 == 25)).序号);
        成员.红26跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 26 || f.红二 == 26 || f.红三 == 26 || f.红四 == 26 || f.红五 == 26 || f.红六 == 26)).序号);
        成员.红27跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 27 || f.红二 == 27 || f.红三 == 27 || f.红四 == 27 || f.红五 == 27 || f.红六 == 27)).序号);
        成员.红28跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 28 || f.红二 == 28 || f.红三 == 28 || f.红四 == 28 || f.红五 == 28 || f.红六 == 28)).序号);
        成员.红29跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 29 || f.红二 == 29 || f.红三 == 29 || f.红四 == 29 || f.红五 == 29 || f.红六 == 29)).序号);
        成员.红30跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 30 || f.红二 == 30 || f.红三 == 30 || f.红四 == 30 || f.红五 == 30 || f.红六 == 30)).序号);
        成员.红31跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 31 || f.红二 == 31 || f.红三 == 31 || f.红四 == 31 || f.红五 == 31 || f.红六 == 31)).序号);
        成员.红32跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 32 || f.红二 == 32 || f.红三 == 32 || f.红四 == 32 || f.红五 == 32 || f.红六 == 32)).序号);
        成员.红33跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 33 || f.红二 == 33 || f.红三 == 33 || f.红四 == 33 || f.红五 == 33 || f.红六 == 33)).序号);
        成员.蓝跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 < 序号 && f.蓝 == 成员.蓝).序号 - 1);
    }
    库.SaveChanges();
    return RedirectToAction("默认");
}

#4


var 序号 = 库.历史数据.Max(m => m.序号);
    foreach (var 成员 in 库.历史数据.Where(w => w.序号 == null).OrderBy(o => o.期数))
    {
        序号++;
var 成员=库.成员表.first(序号)
        成员.红1跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 1 || f.红二 == 1 || f.红三 == 1 || f.红四 == 1 || f.红五 == 1 || f.红六 == 1)).序号);
        成员.红2跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 2 || f.红二 == 2 || f.红三 == 2 || f.红四 == 2 || f.红五 == 2 || f.红六 == 2)).序号);
        成员.红3跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 3 || f.红二 == 3 || f.红三 == 3 || f.红四 == 3 || f.红五 == 3 || f.红六 == 3)).序号);
        成员.红4跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 4 || f.红二 == 4 || f.红三 == 4 || f.红四 == 4 || f.红五 == 4 || f.红六 == 4)).序号);
        成员.红5跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 5 || f.红二 == 5 || f.红三 == 5 || f.红四 == 5 || f.红五 == 5 || f.红六 == 5)).序号);
        成员.红6跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 6 || f.红二 == 6 || f.红三 == 6 || f.红四 == 6 || f.红五 == 6 || f.红六 == 6)).序号);
        成员.红7跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 7 || f.红二 == 7 || f.红三 == 7 || f.红四 == 7 || f.红五 == 7 || f.红六 == 7)).序号);
        成员.红8跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 8 || f.红二 == 8 || f.红三 == 8 || f.红四 == 8 || f.红五 == 8 || f.红六 == 8)).序号);
        成员.红9跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 9 || f.红二 == 9 || f.红三 == 9 || f.红四 == 9 || f.红五 == 9 || f.红六 == 9)).序号);
        成员.红10跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 10 || f.红二 == 10 || f.红三 == 10 || f.红四 == 10 || f.红五 == 10 || f.红六 == 10)).序号);
        成员.红11跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 11 || f.红二 == 11 || f.红三 == 11 || f.红四 == 11 || f.红五 == 11 || f.红六 == 11)).序号);
        成员.红12跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 12 || f.红二 == 12 || f.红三 == 12 || f.红四 == 12 || f.红五 == 12 || f.红六 == 12)).序号);
        成员.红13跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 13 || f.红二 == 13 || f.红三 == 13 || f.红四 == 13 || f.红五 == 13 || f.红六 == 13)).序号);
        成员.红14跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 14 || f.红二 == 14 || f.红三 == 14 || f.红四 == 14 || f.红五 == 14 || f.红六 == 14)).序号);
        成员.红15跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 15 || f.红二 == 15 || f.红三 == 15 || f.红四 == 15 || f.红五 == 15 || f.红六 == 15)).序号);
        成员.红16跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 16 || f.红二 == 16 || f.红三 == 16 || f.红四 == 16 || f.红五 == 16 || f.红六 == 16)).序号);
        成员.红17跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 17 || f.红二 == 17 || f.红三 == 17 || f.红四 == 17 || f.红五 == 17 || f.红六 == 17)).序号);
        成员.红18跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 18 || f.红二 == 18 || f.红三 == 18 || f.红四 == 18 || f.红五 == 18 || f.红六 == 18)).序号);
        成员.红19跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 19 || f.红二 == 19 || f.红三 == 19 || f.红四 == 19 || f.红五 == 19 || f.红六 == 19)).序号);
        成员.红20跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 20 || f.红二 == 20 || f.红三 == 20 || f.红四 == 20 || f.红五 == 20 || f.红六 == 20)).序号);
        成员.红21跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 21 || f.红二 == 21 || f.红三 == 21 || f.红四 == 21 || f.红五 == 21 || f.红六 == 21)).序号);
        成员.红22跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 22 || f.红二 == 22 || f.红三 == 22 || f.红四 == 22 || f.红五 == 22 || f.红六 == 22)).序号);
        成员.红23跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 23 || f.红二 == 23 || f.红三 == 23 || f.红四 == 23 || f.红五 == 23 || f.红六 == 23)).序号);
        成员.红24跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 24 || f.红二 == 24 || f.红三 == 24 || f.红四 == 24 || f.红五 == 24 || f.红六 == 24)).序号);
        成员.红25跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 25 || f.红二 == 25 || f.红三 == 25 || f.红四 == 25 || f.红五 == 25 || f.红六 == 25)).序号);
        成员.红26跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 26 || f.红二 == 26 || f.红三 == 26 || f.红四 == 26 || f.红五 == 26 || f.红六 == 26)).序号);
        成员.红27跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 27 || f.红二 == 27 || f.红三 == 27 || f.红四 == 27 || f.红五 == 27 || f.红六 == 27)).序号);
        成员.红28跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 28 || f.红二 == 28 || f.红三 == 28 || f.红四 == 28 || f.红五 == 28 || f.红六 == 28)).序号);
        成员.红29跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 29 || f.红二 == 29 || f.红三 == 29 || f.红四 == 29 || f.红五 == 29 || f.红六 == 29)).序号);
        成员.红30跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 30 || f.红二 == 30 || f.红三 == 30 || f.红四 == 30 || f.红五 == 30 || f.红六 == 30)).序号);
        成员.红31跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 31 || f.红二 == 31 || f.红三 == 31 || f.红四 == 31 || f.红五 == 31 || f.红六 == 31)).序号);
        成员.红32跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 32 || f.红二 == 32 || f.红三 == 32 || f.红四 == 32 || f.红五 == 32 || f.红六 == 32)).序号);
        成员.红33跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 33 || f.红二 == 33 || f.红三 == 33 || f.红四 == 33 || f.红五 == 33 || f.红六 == 33)).序号);
        成员.蓝跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 < 序号 && f.蓝 == 成员.蓝).序号 - 1);
库.SaveChanges();
    }
    

不知道这样行不行

#5


foreach (var 成员 in 库.历史数据.Where(w => w.序号 == null).OrderBy(o => o.期数))

先不淡你for里面的代码,光以上这一句就非常影响性能,不应该这样写

 foreach (var t in 你获取到的结果)

应该改为

var q = 你获取到的结果
 foreach (var t in q)

#6


foreach (var 成员 in 结果))
    {
        序号++;
        成员.序号 = 序号;
        成员.红1跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 1 || f.红二 == 1 || f.红三 == 1 || f.红四 == 1 || f.红五 == 1 || f.红六 == 1)).序号);
        成员.红2跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 2 || f.红二 == 2 || f.红三 == 2 || f.红四 == 2 || f.红五 == 2 || f.红六 == 2)).序号);
        成员.红3跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 3 || f.红二 == 3 || f.红三 == 3 || f.红四 == 3 || f.红五 == 3 || f.红六 == 3)).序号);
        成员.红4跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 4 || f.红二 == 4 || f.红三 == 4 || f.红四 == 4 || f.红五 == 4 || f.红六 == 4)).序号);
        成员.红5跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 5 || f.红二 == 5 || f.红三 == 5 || f.红四 == 5 || f.红五 == 5 || f.红六 == 5)).序号);
        成员.红6跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 6 || f.红二 == 6 || f.红三 == 6 || f.红四 == 6 || f.红五 == 6 || f.红六 == 6)).序号);
        成员.红7跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 7 || f.红二 == 7 || f.红三 == 7 || f.红四 == 7 || f.红五 == 7 || f.红六 == 7)).序号);
        成员.红8跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 8 || f.红二 == 8 || f.红三 == 8 || f.红四 == 8 || f.红五 == 8 || f.红六 == 8)).序号);
        成员.红9跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 9 || f.红二 == 9 || f.红三 == 9 || f.红四 == 9 || f.红五 == 9 || f.红六 == 9)).序号);
        成员.红10跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 10 || f.红二 == 10 || f.红三 == 10 || f.红四 == 10 || f.红五 == 10 || f.红六 == 10)).序号);
        成员.红11跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 11 || f.红二 == 11 || f.红三 == 11 || f.红四 == 11 || f.红五 == 11 || f.红六 == 11)).序号);
        成员.红12跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 12 || f.红二 == 12 || f.红三 == 12 || f.红四 == 12 || f.红五 == 12 || f.红六 == 12)).序号);
        成员.红13跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 13 || f.红二 == 13 || f.红三 == 13 || f.红四 == 13 || f.红五 == 13 || f.红六 == 13)).序号);
        成员.红14跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 14 || f.红二 == 14 || f.红三 == 14 || f.红四 == 14 || f.红五 == 14 || f.红六 == 14)).序号);
        成员.红15跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 15 || f.红二 == 15 || f.红三 == 15 || f.红四 == 15 || f.红五 == 15 || f.红六 == 15)).序号);
        成员.红16跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 16 || f.红二 == 16 || f.红三 == 16 || f.红四 == 16 || f.红五 == 16 || f.红六 == 16)).序号);
        成员.红17跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 17 || f.红二 == 17 || f.红三 == 17 || f.红四 == 17 || f.红五 == 17 || f.红六 == 17)).序号);
        成员.红18跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 18 || f.红二 == 18 || f.红三 == 18 || f.红四 == 18 || f.红五 == 18 || f.红六 == 18)).序号);
        成员.红19跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 19 || f.红二 == 19 || f.红三 == 19 || f.红四 == 19 || f.红五 == 19 || f.红六 == 19)).序号);
        成员.红20跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 20 || f.红二 == 20 || f.红三 == 20 || f.红四 == 20 || f.红五 == 20 || f.红六 == 20)).序号);
        成员.红21跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 21 || f.红二 == 21 || f.红三 == 21 || f.红四 == 21 || f.红五 == 21 || f.红六 == 21)).序号);
        成员.红22跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 22 || f.红二 == 22 || f.红三 == 22 || f.红四 == 22 || f.红五 == 22 || f.红六 == 22)).序号);
        成员.红23跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 23 || f.红二 == 23 || f.红三 == 23 || f.红四 == 23 || f.红五 == 23 || f.红六 == 23)).序号);
        成员.红24跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 24 || f.红二 == 24 || f.红三 == 24 || f.红四 == 24 || f.红五 == 24 || f.红六 == 24)).序号);
        成员.红25跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 25 || f.红二 == 25 || f.红三 == 25 || f.红四 == 25 || f.红五 == 25 || f.红六 == 25)).序号);
        成员.红26跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 26 || f.红二 == 26 || f.红三 == 26 || f.红四 == 26 || f.红五 == 26 || f.红六 == 26)).序号);
        成员.红27跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 27 || f.红二 == 27 || f.红三 == 27 || f.红四 == 27 || f.红五 == 27 || f.红六 == 27)).序号);
        成员.红28跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 28 || f.红二 == 28 || f.红三 == 28 || f.红四 == 28 || f.红五 == 28 || f.红六 == 28)).序号);
        成员.红29跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 29 || f.红二 == 29 || f.红三 == 29 || f.红四 == 29 || f.红五 == 29 || f.红六 == 29)).序号);
        成员.红30跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 30 || f.红二 == 30 || f.红三 == 30 || f.红四 == 30 || f.红五 == 30 || f.红六 == 30)).序号);
        成员.红31跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 31 || f.红二 == 31 || f.红三 == 31 || f.红四 == 31 || f.红五 == 31 || f.红六 == 31)).序号);
        成员.红32跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 32 || f.红二 == 32 || f.红三 == 32 || f.红四 == 32 || f.红五 == 32 || f.红六 == 32)).序号);
        成员.红33跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 <= 序号 && (f.红一 == 33 || f.红二 == 33 || f.红三 == 33 || f.红四 == 33 || f.红五 == 33 || f.红六 == 33)).序号);
        成员.蓝跨度 = Convert.ToByte(序号 - 库.历史数据.OrderByDescending(o => o.序号).First(f => f.序号 < 序号 && f.蓝 == 成员.蓝).序号 - 1);
        库.SaveChanges();
    }

#7


1.你可以先将便利数据查询出来寄存到List里,ToLsit() 方法,然后便利,提交事物更改
2.如果只追寻结果的话,你可以将SaveChanges() 放在循环之外,统一提交,类似遍历来拼接修改语句,遍历完了再提交
3.你可以在外层重新定义一个连接对象,更改用这个对象,和查询的 库 分开,利用 你定义的 “库”查询,再定义一个“库2”,来库2.SaveChanges();