用于查询数据集列表的 Linq 查询
Linq Query for querying a list of DataSet
我有一个数据集列表。
例如:
List<DataSet> list = new List<DataSet>();
对于我的任务,列表中DataSet 的数量和每个DataSet 中DataTable 的数量将在运行 时已知。
现在我想从名称中包含特定字符串的数据集中获取那些表,例如说 'Group1'.
我正在尝试使用以下代码:
var ds= from set in list from table in set
where li.Where(e=>e.Tables.Contains("Group")) select table;
但我得到的错误是 'An expression of type System.Data.DataSet is not allowed in a subsequent from clause in a query expression with source typeList'。
请帮我看看正确的方法。
我试图通过创建另一个 class 来复制您的数据结构。希望这可以帮助。
namespace TestCode
{
class Program
{
static void Main(string[] args)
{
var list = new List<TC> {new TC(2), new TC(2), new TC(3), new TC(4), new TC(5), new TC(2)};
var dt = list.Where( // Contains 3 elements
x => x.X == 2
);
//var ds = from set in list
// from table in set
// where li.Where(e => e.Tables.Contains("Group"))
// select table;
}
}
internal class TC
{
public int X { get; set; }
internal TC(int val)
{
X = val;
}
}
}
这将获取包含名称的表:
var tables = list.SelectMany(x => x.Tables.Cast<DataTable>())
.Where(x => x.TableName.Contains("Group"));
您原来的查询已关闭。它只需要充实一点。首先,它有助于在 from 语句中声明类型。还指定您想要集合中的 table 集合。 where 子句只需要检查 table 的 TableName 属性:
List<DataSet> list = new List<DataSet>();
var ds = from DataSet set in list
from DataTable table in set.Tables
where table.TableName.Contains("Group")
select table;
我有一个数据集列表。
例如:
List<DataSet> list = new List<DataSet>();
对于我的任务,列表中DataSet 的数量和每个DataSet 中DataTable 的数量将在运行 时已知。 现在我想从名称中包含特定字符串的数据集中获取那些表,例如说 'Group1'.
我正在尝试使用以下代码:
var ds= from set in list from table in set
where li.Where(e=>e.Tables.Contains("Group")) select table;
但我得到的错误是 'An expression of type System.Data.DataSet is not allowed in a subsequent from clause in a query expression with source typeList'。
请帮我看看正确的方法。
我试图通过创建另一个 class 来复制您的数据结构。希望这可以帮助。
namespace TestCode
{
class Program
{
static void Main(string[] args)
{
var list = new List<TC> {new TC(2), new TC(2), new TC(3), new TC(4), new TC(5), new TC(2)};
var dt = list.Where( // Contains 3 elements
x => x.X == 2
);
//var ds = from set in list
// from table in set
// where li.Where(e => e.Tables.Contains("Group"))
// select table;
}
}
internal class TC
{
public int X { get; set; }
internal TC(int val)
{
X = val;
}
}
}
这将获取包含名称的表:
var tables = list.SelectMany(x => x.Tables.Cast<DataTable>())
.Where(x => x.TableName.Contains("Group"));
您原来的查询已关闭。它只需要充实一点。首先,它有助于在 from 语句中声明类型。还指定您想要集合中的 table 集合。 where 子句只需要检查 table 的 TableName 属性:
List<DataSet> list = new List<DataSet>();
var ds = from DataSet set in list
from DataTable table in set.Tables
where table.TableName.Contains("Group")
select table;