如何从DataTable获取特定列值?

pea*_*ace 38 .net c# winforms

我有一个数据表.我需要根据用户输入获取某个列值.例如,假设数据表有两列CountryID和CountryName.

我需要根据用户输入的国家/地区名称在数据表中找到CountryID.我可以打开与DB的连接,并从countryName = @userinput的Country运行查询select countryID.无论如何我可以在数据表上执行此操作.

Sea*_*ard 66

string countryName = "USA";
DataTable dt = new DataTable();
int id = (from DataRow dr in dt.Rows
              where (string)dr["CountryName"] == countryName
              select (int)dr["id"]).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)


Jim*_*mmy 19

foreach (DataRow row in Datatable.Rows) 
{
    if (row["CountryName"].ToString() == userInput) 
    {
        return row["CountryID"];
    }
}
Run Code Online (Sandbox Code Playgroud)

虽然这可能无法直接编译,但您应该明白这一点,我也相信通过SQL进行查询将会非常优越,因为巨大的数据表需要很长时间才能运行所有行.


Dei*_*lan 12

我建议这种方式基于扩展方法:

IEnumerable<Int32> countryIDs =
    dataTable
    .AsEnumerable()
    .Where(row => row.Field<String>("CountryName") == countryName)
    .Select(row => row.Field<Int32>("CountryID"));
Run Code Online (Sandbox Code Playgroud)

需要引用System.Data.DataSetExtensions.dll.

  • 这正是我想要的,谢谢!我几乎错过了你对该参考的最终评论 - 谢谢你. (2认同)