如何在 LINQ 查询 .NET 中正确地将数据从链接表移动到主表?

问题描述 投票:0回答:1

使用“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

有人知道出了什么问题吗?

c# .net linq iqueryable
1个回答
0
投票
_context.Entry(item.Area).State = EntityState.Modified;
await _context.SaveChangesAsync();
© www.soinside.com 2019 - 2024. All rights reserved.