2016-11-28 8 views
0

を使用してグループのDataTable結果に私持って次のDataTableどのようにLINQのクエリ式

DataTable BookTable = new DataTable(); 
//Add columns in Book Table 
BookTable.Columns.Add("BookCategory", typeof(string)); 
BookTable.Columns.Add("BookName", typeof(string)); 
//Add rows in Book Table 
BookTable.Rows.Add("Programming", "C# basics"); 
BookTable.Rows.Add("Programming", "Java basics"); 
BookTable.Rows.Add("Networking", "Networking Basics"); 
BookTable.Rows.Add("Database", "Intro to Database"); 

私は、次のラムダ式

に私が書かれている。このため帳のカテゴリ欄に基づいて書籍名をフィルタリングしたいです
var BooksList = from Book in BookTable.AsEnumerable() 
       group Book by Book.Field<string>("BookCategory") into g 
       let list = g.ToList() 
       select new 
       { 
        BookCategory = g.Key, 

        BookNames = list.Select(x => x.Field<string>("BookName").ToString())     }; 

ここで、出力を次の形式で印刷する必要があります。

  1. プログラミング
    • C#の基礎
    • のJavaの基本
  2. ネットワーキング
    • ネットワーキングの基礎
  3. データベースデータベース

から

  • イントロは、私は次のコードでのブックカテゴリーからブック名を取得する方法を知ることに興味を持っています。

    あなたのコード内でString.Joinを挿入必要
    foreach(var Book in BooksList) 
    { 
        Console.WriteLine(Book.BookCategory); 
        //logic to Obtain Book Names Here ; 
    } 
    
+0

うーん... 'Book.BookNames'?! –

+0

その戻り値: '{System.Linq.Enumerable.WhereSelectListIterator }' Bookの名前はStringには印刷されません。 – Asif

+0

あなたのコードで '.Where'のコメントを外しました。なぜ' WhereSelectListIterator'を取得するのですか?それは本当のコードではありませんか?また、どのようなコードを試してみましたか、この例外の原因は何ですか(それはまったく例外ですか)。 –

答えて

0

var BooksList = from Book in BookTable.AsEnumerable() 
         group Book by Book.Field<string>("BookCategory") into g 
         let list = g.ToList() 
         select new 
         { 
          BookCategory = g.Key, 

          BookNames = string.Join(" ; ",list.Select(x => x.Field<string>("BookName").ToString())) 
         }; 
+0

ありがとうございます。 – Asif

関連する問題