簡體   English   中英

Linq Query用於查詢數據集列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM