4

私はネットで調査しましたが、ほとんどの結果は sql から linq に変換されており、linq から sql への変換はめったにありません。

これは私がSQLに変換したいコードです:

 using (CommerceEntities db = new CommerceEntities())
    {
    try
      {
      var query = (from ProductOrders in db.OrderDetails
                        join SelectedProducts in db.Products on ProductOrders.ProductID  
                        equals SelectedProducts.ProductID
                        group ProductOrders by new
                            {
                            ProductId = SelectedProducts.ProductID,
                            ModelName = SelectedProducts.ModelName
                            } into grp
                        select new
                            {
                            ModelName = grp.Key.ModelName,
                            ProductId = grp.Key.ProductId,
                            Quantity = grp.Sum(o => o.Quantity)
                            } into orderdgrp where orderdgrp.Quantity > 0 
                        orderby orderdgrp.Quantity descending select orderdgrp).Take(5);

                    RepeaterItemsList.DataSource = query;
                    RepeaterItemsList.DataBind(); 
      }
    catch (Exception exp)
      {
      throw new Exception("ERROR: Unable to Load Popular Items - " + 
                           exp.Message.ToString(), exp);
      }
    }
4

2 に答える 2

5

LinqPadで LINQ ステートメントの実行を試みることができます。LinqPad の使用方法の例については、こちらの回答を確認してください

生成された SQL ステートメントを表示するタブがあります。

于 2012-07-30T06:59:46.007 に答える
2

LINQ to SQL へのログインに関する記事を次に示します。クエリの送信先の TextWriter を指定できます。

基本的には、次のように記述できます。

db.Log = new System.IO.StreamWriter("linq-to-sql.log") { AutoFlush = true };

...dbデータコンテキストはどこにありますか。

SQL では、次のように記述します (ただし、自動生成されるため、生成されたコードは大きく異なります)。

SELECT TOP 5 Products.ModelName, Products.ProductID, SUM(OrderDetails.Quantity) qty
FROM OrderDetails
INNER JOIN Products ON OrderDetails.ProductID = Products.ProductID
GROUP BY Products.ProductID, Products.ModelName
HAVING qty > 0
ORDER BY qty DESC
于 2012-07-30T07:03:06.087 に答える