| ■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 |