使用 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
});
我有一个 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
});