c# - 更新关于重复的字段 IEnumerable c# EF
问题描述
我有以下查询:
sqlQuery = 'SELECT MPID, MAPPOINT, X, Y, MPCODE, MultipleSite = 0 FROM MAPPOINT'
var data = context.Database.SqlQuery<WayPoint>(sqlQuery).ToList();
我在下面粘贴了结果。
我想更新此结果并将MultipleSite
Column 设置为 1,以防其他行具有相同的X
和Y
值。
例如:记录 2 和 3 具有相同的X
和Y
值,所以我想将它们的列的值更新MultipleSite
为 1。我是否必须迭代结果并进行一些比较,或者我可以用其他方式吗?
这个想法是有一个标志告诉我在那个坐标中还有其他站点。
我的课看起来像这样:
public class WayPoint
{
public int MPID { get; set; }
public string MAPPOINT { get; set; }
public double X { get; set; }
public double Y { get; set; }
public string MPCODE { get; set; }
public bool MultipleSite { get; set; }
}
解决方案
给定您的数据模型(即WayPoint
),请尝试以下操作:
data.GroupBy(o => new { X = o.X, Y = o.Y })
.Select(g => new
{
Items = g.Select(gp => new WayPoint
{
MPID = gp.MPID,
MAPPOINT = gp.MAPPOINT,
X = g.Key.X,
Y = g.Key.Y,
MPCODE = gp.MPCODE,
MultipleSite = g.Count() > 1
})
}
)
.SelectMany(g=>g.Items)
.ToList();
推荐阅读
- sql - 通过多个子查询优化器计划从 cte 中选择多个列
- c# - 为什么不编译?无法从“X”转换?到“X”
- c# - 在 C# 中是否可以通过属性存在进行模式匹配?
- python - 当我们在 Python 中不提及类时
- istio - ISTIO External Auth : '503 上游连接错误或在标头之前断开/重置。重置原因:通过 HTTPS 访问时连接终止根'
- android-studio - 我如何在 android studio 的 kotlin aproject 中使用 java jep perser?
- javascript - 如何在箱线图高图中将函数设置为最大值
- checkbox - 在反应中打开和关闭模式后如何保存复选框的标记?
- apache-nifi - 使用 NiFi 处理器计算文件中的文件数和行数
- linux - 删除固定宽度文件中的重复项,该文件除最后一次出现外具有多个键列