list - LINQ 查询从 csv 文件的列表中查找元素

标签 list csv linq element contains

我正在尝试查找是否为 csv 文件的每一行找到第一个列表的任何元素

第一个列表:

XX01235756777
YY01215970799

第二个列表(即 csv 文件):

Column_1|Column_2|Column_3|Column_4|Column_5|Column_6|Column_7
VX|2022-06-09 11:50:55|Y|Y|N|TT56431254135|Microsoft
VX|2022-06-09 11:50:55|Y|Y|N|XX01235756777|Meta
VX|2022-06-09 11:50:55|Y|Y|N|YY18694654355|Nokia
VX|2022-06-09 11:50:55|Y|Y|N|OO01215970799|BlackStone
VX|2022-06-09 11:50:55|Y|Y|N|YY01215970799|Alphabet

我的代码尝试:

        List<string> filteredList = new List<string>();
        using (StreamReader reader = new StreamReader(csvFilePath))
        {
            string line;
            while ((line = reader.ReadLine()) != null)
            {
                if (line.Any(x => isinList.Contains(x.ToString())))
                {
                    filteredList.Add(line);
                }
            }
        }
        return filteredList;

过滤列表应该是:

VX|2022-06-09 11:50:55|Y|Y|N|XX01235756777|Meta
VX|2022-06-09 11:50:55|Y|Y|N|YY01215970799|Alphabet

我成功地在 csv 文件的每一行中找到了一个元素。

但是如果每一行中都存在整个列表,我无法编写正确的 LINQ 来处理。

任何想法或任何你能指出的地方都会对我有很大帮助。

最佳答案

您最终将 csv 文件中的行拆分为字符,并根据 isinList 检查每个字符。您应该改为检查 isinList 中的任何字符串是否存在于 csv 文件的每一行中。

List<string> filteredList = new List<string>();
using (StreamReader reader = new StreamReader(csvFilePath))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        if (isinList.Any(x => line.Contains(x)))
        {
            filteredList.Add(line);
        }
    }
}

关于list - LINQ 查询从 csv 文件的列表中查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73620751/

相关文章:

c# - 在NET核心中以有效的方式将一种数据类型的数组转换为另一种数据类型的数组?

java - 只能包含一次值的列表

list - 在谓词响应中评估 s(N),而不丢失功能

java - 数组的 Jackson-CSV 架构

asp.net-mvc - 如何绑定(bind)从具有 linq 到 sql asp.net mvc 的模型中排除多个属性

c# - 按元素拆分列表

c# - 为什么输出是 6 而不是其他数字?

Python 将 Excel 选项卡转换为 CSV 文件

java - 将 CSV 映射到模型

c# - 比较一个类型的成员——计算成员之间的差异