[英]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;
但是我得到的錯誤是“在帶有源typeList的查詢表達式中的后續from子句中不允許使用System.Data.DataSet類型的表達式”。
請以正確的方式幫助我。
我試圖通過創建另一個類來復制您的數據結構。 希望這可以幫助。
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語句中聲明類型。 還指定您要從集合中收集表。 where子句只需要檢查表的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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.