代码之家  ›  专栏  ›  技术社区  ›  Vincent Krisna

C#EF Core WHERE IN LINQ from List with。不包含任何退货

  •  0
  • Vincent Krisna  · 技术社区  · 1 年前
    var ids = new List<string>();
    
    foreach (int rowHandle in this.viewRateManager.GetSelectedRows())
    {
        ids.Add(this.viewRateManager.GetRowCellValue(rowHandle, "Id").ToString());
    }
    
    var spr = this.contextSQL.ProductSubProductRate.Where(e => e.Id.Contains(ids.ToString()));
    DateTime time = this.contextSQL.Database.SqlQuery<DateTime>($"SELECT NOW()").AsEnumerable().FirstOrDefault();
    
    foreach (var item in spr)
    {
        if (item.Approver != null) { continue; }
    
        item.Approver = Core.cxCore.ActiveAccount;
        item.Approved = time;
    }
    
    this.contextSQL.SaveChanges();
    

    昨天我花了一晚上的时间终于能够对数据进行多重审批,并简化了一些代码。睡得很好。 今天早上我继续我的工作,它已经不起作用了。虽然我通过云移动到了另一台电脑,但应该是一样的。我仍在寻找为什么它不起作用,为什么昨天它像魅力一样起作用。我想确认一下我能不能这样做?

    .Where(e => e.Id.Contains(ids.ToString()));
    

    因为当我离开的时候。在哪里,它有效。所以肯定是出了什么问题。包含。 我检查了ID,它正确地返回了确切的字符串标识符。

    1 回复  |  直到 1 年前
        1
  •  5
  •   Darkk L    1 年前

    你用写了逻辑 Contains 向后

    var spr = this.contextSQL.ProductSubProductRate.Where(e => e.Id.Contains(ids.ToString()));
    

    替换为

    var spr = this.contextSQL.ProductSubProductRate.Where(e => ids.Contains(е.Id));