【问题标题】:Linq query to update values based on another columnLinq 查询以根据另一列更新值
【发布时间】:2021-08-18 10:21:54
【问题描述】:

如何根据其他列值匹配来更新列。例如。

输入表只有 a 列和 b 列 我想创建列 c 并根据列 a 更新值。如果 a 有单词错误列 c 应该失败。如果它成功了,那么 c 也应该是成功的。

同样应根据 b 列的值创建 d 列

我有数十万条记录,如何使用 linq 实现这一目标

输出:

Colum A.  column B column c column d
No error. Router.   Failed.  Network
Error.    Switch.   Failed.   Network
Success.  App.    Success. Application

【问题讨论】:

  • 请不要在这里使用“lakh”/“lac”之类的词,因为我们不住在印度的人不会使用或理解它们。
  • 您使用哪个 LINQ 提供程序? EF 核心?

标签: c# .net database linq


【解决方案1】:

假设您的表模型类看起来像:

public class Model
{
    public string ColumnA { get; set; }
    public string ColumnB { get; set; }
    public string ColumnC { get; set; }
    public string ColumnD { get; set; }
}

并且您已将表格声明为:

List<Model> table;
//Initialize list, with column A and column B values entered/initialized

你已经定义了以下变量:

var NetworkKeys = new List<string> {"router", "switch"};

然后使用linq foreach(你也可以使用普通的foreach)和if..else,你可以得到c列和d列的设置值:

table.ForEach(a =>
    {
        if(a.ColumnA.ToLower().Contains("error"))
            a.ColumnC = "Failed";
        else if(a.ColumnA.ToLower().Contains("success"))
            a.ColumnC = "Success";

        if(NetworkKeys.Contains(a.ColumnB.ToLower()))
            a.ColumnD = "Network";
        else if(a.ColumnB.ToLower().Contains("app"))
            a.ColumnD = "Application";
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 2021-03-03
    相关资源
    最近更新 更多