C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■90109 / 3階層)  LINQでJOIN時のエラーについて
□投稿者/ WebSurfer (1750回)-(2019/02/09(Sat) 11:54:52)
No90107 (レイ さん) に返信

質問者さんのコードと似たような(あくまで似たような)サンプルを作って試してみましたが
エラーは再現できませんでした。

質問者さんのコードは理解できませんし、エラーは再現できないということで原因不明です。

ただ、No90108 の私のレスで書いた「LINQにも色々 〜SQLに変換されるモノと変換されないモ
ノ」は関係なさそうな感じです。

ご参考に、自分が作ったサンプルのコードをアップしておきます。

DB は Microsoft が提供する SQL Server サンプルデータベース Northwind で、それから
Visual Studio のウィザードを使って ADO.NET Entity Data Model を生成し、その中の
Order_Details, Products テーブルを使っています。

環境は、Windows 10 Pro 64-bit, .NET 4.6.1, Entity Framework 6.2.0, Visual Studio
Community 2015 Update 3, SQL Server 2008 Express です。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Entity;

namespace ConsoleAppJoinByLinq
{
    class Program
    {
        static void Main(string[] args)
        {
            NORTHWINDEntities context = new NORTHWINDEntities();

            var delivery = from d in context.Order_Details
                           group d by d.ProductID into g
                           orderby g.Key
                           select new
                           {
                               ItemCode = g.Key,
                               Count = g.Sum(x => x.Quantity),
                               SumAmount = g.Sum(x => x.UnitPrice * x.Quantity)
                           };

            var test = from p in context.Products
                       join d in delivery
                       on p.ProductID equals d.ItemCode into dGroup
                       from item in dGroup.DefaultIfEmpty()
                       select new
                       {
                           ItemCode = p.ProductID,
                           Name = p.ProductName,
                           Count = item.Count,
                           SumAmount = item.SumAmount
                       };

            foreach (var x in test)
            {
                Console.WriteLine($"ID: {x.ItemCode}, Name: {x.Name}, Count: {x.Count}, Sum: {x.SumAmount}");
            }
        }
    }
}

結果は:
ID: 1, Name: Chai, Count: 828, Sum: 14277.6000
ID: 2, Name: Chang, Count: 1057, Sum: 18559.2000
ID: 3, Name: Aniseed Syrup, Count: 328, Sum: 3080.0000
・・・中略・・・
ID: 77, Name: Original Frankfurter grune Sose, Count: 791, Sum: 9685.0000

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[2]: LINQでJOIN時のエラーについて /レイ →Re[4]: LINQでJOIN時のエラーについて /レイ
 
上記関連ツリー

LINQでJOIN時のエラーについて / レイ (19/02/08(Fri) 23:33) #90105
Re[1]: LINQでJOIN時のエラーについて / WebSurfer (19/02/08(Fri) 23:43) #90106
  └ Re[2]: LINQでJOIN時のエラーについて / レイ (19/02/09(Sat) 00:27) #90107
    ├ Re[3]: LINQでJOIN時のエラーについて / WebSurfer (19/02/09(Sat) 09:06) #90108
    └ LINQでJOIN時のエラーについて / WebSurfer (19/02/09(Sat) 11:54) #90109 ←Now
      └ Re[4]: LINQでJOIN時のエラーについて / レイ (19/02/09(Sat) 14:40) #90111
        ├ Re[5]: LINQでJOIN時のエラーについて / WebSurfer (19/02/09(Sat) 14:40) #90112
        └ Re[5]: LINQでJOIN時のエラーについて / WebSurfer (19/02/09(Sat) 15:08) #90113
          └ Re[6]: LINQでJOIN時のエラーについて / レイ (19/02/09(Sat) 20:52) #90114
            ├ Re[7]: LINQでJOIN時のエラーについて / WebSurfer (19/02/09(Sat) 22:48) #90115
            └ Re[7]: LINQでJOIN時のエラーについて / WebSurfer (19/02/10(Sun) 10:20) #90120
              └ Re[8]: LINQでJOIN時のエラーについて / レイ (19/02/10(Sun) 19:30) #90124
                └ Re[9]: LINQでJOIN時のエラーについて / レイ (19/02/15(Fri) 22:22) #90194 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信