首页 文章

使用Linq从DataTable中删除列和行

提问于
浏览
0

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

这是一个示例表:

Input

我想只获得列Play(任意值)列Weather(晴天行)

所以输出可以是另一个DataTable,如下所示:

Output

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

2 回答

  • 3

    结果是否有另一个 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 ,则可以创建一个并手动添加行 .

  • 1

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

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

相关问题