使用 Linq 从 DataTable 中删除列和行

removing column and rows from DataTable using Linq

我有一个 DataTable 作为输入,其中包含许多列和行,

这是一个示例 table:

我只想获取列 Weather(sunny rows) 和列 Play(任意值)

所以输出可以是另一个像这样的数据表:

所以任何想法都可以帮助我很多,谢谢:)

结果是否有另一个DataTable?我只会使用命名或匿名类型。

var filtered = sourceTable.Rows.Cast<DataRow>()
.Where(x => x.Field<string>("WEATHER") == "sunny")
.Select(x => new
{
    Weather = x.Field<string>("WEATHER"),
    Play = x.Field<string>("PLAY")
})
.ToList();

那你就可以把它当作

foreach (var item in filtered)
{
    Console.WriteLine(string.Format("Weather ={0}, Play = {1}", item.Weather,item.Play));
}

如果您需要结果DataTable,您可以创建一个并手动添加行。

如果可以获取匿名列表,您可以这样做:

var result = dt.AsEnumerable()
               .Where(x => x["WEATHER"] == "sunny")
               .Select(x => 
                     new 
                        { 
                            WEATHER = x["WEATHER"] as string, 
                            PLAY = x["PLAY"] as string 
                        });