【问题标题】:How to select values from datatable based on another datatable using DataRow list如何使用 DataRow 列表从基于另一个数据表的数据表中选择值
【发布时间】:2019-06-29 16:50:57
【问题描述】:

我有 2 个数据表

我想根据数据表 dtSeats(第一个)中的数据过滤 DataTable dtPross(第二个)中的结果

我使用这个代码:

DataTable dtSeats = new DataTable();
dtSeats = "select SitNum,Num from dbo.Table1"
SitNumList = (from row in dtSeats.AsEnumerable() 
             select Convert.ToInt32(row["SitNum"])).ToList();

当我使用此代码根据 Datarow 列表过滤数据时

DataTable dtPross = "select SitNum from dbo.Table2 where SitNum in (" + SitNumList.ToList() + ")";

我收到了这个错误

SitNum in (System.Collections.Generic.List`1[System.Int32])

我错过了什么吗?

提前致谢。

【问题讨论】:

    标签: c#


    【解决方案1】:

    是的,您错过了将 List<int> 转换为逗号分隔的元素字符串。

    试试下面的代码

    //Below code will convert List<int> SitNumList = new List<int>(){1, 2, 3, 4} to string "1, 2, 3, 4"
    string siteNums = string.Join(", ", SitNumList);
    DataTable dtPross = "select SitNum from dbo.Table2 where SitNum in (" + siteNums  + ")";
    

    【讨论】:

    • 为什么是SitNumList.Select(x =&gt; x.ToString())?你不能直接通过SitNumList,因为它已经是 IEnumerable 了吗?
    • @JohnyL,我更新了我的答案,我想我需要先将整数转换为字符串,然后将其传递给string.Join(),谢谢指正
    • 一点也不。 ? 现在一切正常。 ?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    • 2014-10-25
    相关资源
    最近更新 更多