使用“Where”过滤查询结果不起作用,其中先前的字段之一被替换为链接表中的值
我有 Items 表和另一个相关表 (ItemsAdditionalFiels)
[Table("Items")]
public class Items : Entity
{
public string Id { get; set; }
public string City { get; set; }
public string Area {get; set; }
public ICollection<ItemsAdditionalFiels> AdditionalFiels { get; set; }
}
[Table("ItemsAdditionalFiels")]
public class ItemsAdditionalFiels: Entity
{
public string ItemId { get; set; }
public string AddArea{ get; set; }
}
我还有以下疑问
IQueryable<Items> query = _context.Set<Items>()
.Include(i => i.AdditionalFiels);
我需要在城市等于“伦敦”的情况下,将 Area 中的值替换为附加属性中第一个找到的 AddArea 值。
为此,我编写了以下代码
foreach (var item in query)
{
if (item.City == "London")
{
item.Area = item.AdditionalFiels.FirstOrDefault()?.Location;
}
}
调试代码时,显示必要的数据已成功替换。
但是,如果尝试过滤数据,尝试从 Area 中查找某些值(之前已被 AddArea 中的值替换),则什么也找不到。
var test = query.Where(m => m.Area.Contains("Remote")).ToList(); //nothing was found
有人知道出了什么问题吗?
_context.Entry(item.Area).State = EntityState.Modified;
await _context.SaveChangesAsync();