【问题标题】:How to get columns with values from second list which is contain in first list?如何从包含在第一个列表中的第二个列表中获取具有值的列?
【发布时间】:2019-12-21 00:28:32
【问题描述】:

我有两个列表。第一个列表具有匹配的列,该列在第二个列表中可用。 我想用第二个列表中的值显示匹配的列。

            List<string> _filtredData = new List<string>();

            _filtredData.Add("Broker");
            _filtredData.Add("Loaction");
            _filtredData.Add("StandardLineItem");
            _filtredData.Add("Section");

            foreach (DataColumn _dtCol in FinalDiffData.Columns)
            {
                if (matchedItems.Contains(_dtCol.ToString()))
                {
                    _filtredData.Add(_dtCol.ToString());
                }
            }

_filtredData -> 包含第二个列表中可用的匹配列。

FinalDiffData.AsEnumerable() -> 这是第二个列表。

        List<string> _filtredData = new List<string>();

        _filtredData.Add("Broker");
        _filtredData.Add("Loaction");
        _filtredData.Add("StandardLineItem");
        _filtredData.Add("Section");

        foreach (DataColumn _dtCol in FinalDiffData.Columns)
        {
            if (matchedItems.Contains(_dtCol.ToString()))
            {
                    _filtredData.Add(_dtCol.ToString());
            }
        }

        var shortedListMismatchElementLocal = _filtredData;

        var result = FinalDiffData.AsEnumerable().Where(p => 
        shortedListMismatchElementLocal.Any());

请帮我正确回答。


从您的上一条评论编辑

FinalDiffData.AsEnumerable() 列表具有类似

的列
Broker, Loaction, StandardLineItem, Section, 2Q2019E, 3Q2019E, 4Q2019E, 2019E, 1Q2020E 

等作为收入订单。 _filterredData 列表有

Broker, Loaction, StandardLineItem, Section, 2Q2019E, 3Q2019E, 4Q2019E, 

我想从 _filtredData 列表中获得具有 FinalDiffData.AsEnumerable() 值的匹配列

【问题讨论】:

  • 什么是匹配项?。在 Linq 中有 intersect 的选项 dotnetperls.com/intersect
  • 什么是FinalDiffData?是DataTable 还是List&lt;string&gt; 还是...?
  • 您需要比较两个列表。您可以在第二个列表中使用 Contains 进行比较。请参阅此基本示例dotnetfiddle.net/lBkl1Y
  • @haldo:FinalDiffData 是一个转换为 FinalDiffData.AsEnumerable() 的数据表。 FinalDiffData.AsEnumerable() 有多个列和列表_filtredData 中的同一列。
  • 如果您告诉我们数据表中有哪些列,至少可以帮助我们回答您要匹配值的列。

标签: c# list linq datatable


【解决方案1】:

您需要将List&lt;string&gt;DataTable 进行比较。您只对数据表中的一列感兴趣(我假设列名是“数据”)。

以下查询将获取列"Data" 中匹配_filteredData 的所有行。

var result = FinalDiffData
               .AsEnumerable()
               .Where(p => _filtredData.Contains(p["Data"]));  // use the actual column name here

【讨论】:

    猜你喜欢
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 2022-10-03
    • 2019-09-27
    • 2013-12-05
    • 1970-01-01
    相关资源
    最近更新 更多