LINQに変換しようとしているSQLクエリがあり、クエリが列挙されるときにわかりにくいエラーメッセージを理解できません。 (意図したとおりに動作します)LINQへの結合によるSQLの変換エラー
SQLクエリは、次のとおりです。私が持っている
var q = from a in _context.LoadTestSummary
where
a.TargetStack == env &&
a.TestGuid != null &&
a.StartTime != null &&
a.LoadTestRunId != null
join b in _context.LoadTestTestSummaryData on new
{
LoadTestRunId = Convert.ToInt32(a.LoadTestRunId)
} equals new
{
LoadTestRunId = b.LoadTestRunId
}
group new { a, b } by new
{
a.TestGuid
}
into g
select new
{
DateCreated = g.Min(p => p.a.StartTime),
NumScenarios = g.Count(),
TestGuid = g.Key.TestGuid
NumTests = // ???
};
2つの問題:
1)
select a.TestGuid, MIN(a.StartTime) as StartTime, COUNT(b.TestCaseId) as NumTests, COUNT(DINSTINCT a.Id) as NumScenarios
from LoadTestSummary as a
join LoadTestTestSummaryData as b
on a.LoadTestRunid = b.LoadTestRunId
where
a.TargetStack = env and
a.TestGuid IS NOT NULL AND
a.StartTime IS NOT NULL AND
a.LoadTestRunId IS NOT NULL
group by a.TestGuid
は、私は、次の取得、LINQへの変換しますクエリが列挙されると、私は実行時にエラーが発生し、解読に問題があります。クエリはLinqpadで正常に動作しますが、私のプログラムではランタイムエラーが発生します。私は何がこれを引き起こすか分からない。ちょうどこのを凝視することは、私の頭を傷つける可能:
ArgumentException: Expression of type 'System.Func``2[Microsoft.Data.Entity.Query.EntityQueryModelVisitor+TransparentIdentifier``2[PerfPortal.Models.LoadTestSummary,PerfPortal.Models.LoadTestTestSummaryData],<>f__AnonymousType7``1[System.String]]' cannot be used for parameter of type 'System.Func``2[<>f__AnonymousType5``2[PerfPortal.Models.LoadTestSummary,PerfPortal.Models.LoadTestTestSummaryData],<>f__AnonymousType7``1[System.String]]' of method 'System.Collections.Generic.IEnumerable``1[System.Linq.IGrouping``2[<>f__AnonymousType7``1[System.String],<>f__AnonymousType5``2[PerfPortal.Models.LoadTestSummary,PerfPortal.Models.LoadTestTestSummaryData]]] _GroupBy[<>f__AnonymousType5``2,<>f__AnonymousType7``1,<>f__AnonymousType5``2](System.Collections.Generic.IEnumerable``1[<>f__AnonymousType5``2[PerfPortal.Models.LoadTestSummary,PerfPortal.Models.LoadTestTestSummaryData]], System.Func``2[<>f__AnonymousType5``2[PerfPortal.Models.LoadTestSummary,PerfPortal.Models.LoadTestTestSummaryData],<>f__AnonymousType7``1[System.String]], System.Func``2[<>f__AnonymousType5``2[PerfPortal.Models.LoadTestSummary,PerfPortal.Models.LoadTestTestSummaryData],<>f__AnonymousType5``2[PerfPortal.Models.LoadTestSummary,PerfPortal.Models.LoadTestTestSummaryData]])'
2)私はNumTestsフィールドにCOUNT(DISTINCT a.Id)を取得する方法はかなりわかりません。これはLINQではサポートされていないようですが、他の人がこの質問をしているように見えるので、#1が解決されたらそれを理解できるかもしれません。
ここで何が間違っていると思いますか?私は、エラーが私に言っていることを正確には確信していません。
すべてのご協力ありがとうございます。
ありがとうございましたGasper、しかしそれは同じエラーを与えるようです。私はそれが(NumTestsフィールドと同様に)それを削除すると、クエリがうまく動作するので、それが結合に関連していることを知っています。私はあなたのクエリがLinqpadでうまく動作することを明確にする必要があります...多分私の生成されたモデルに何か問題があります。私は再建を試みます。 –
それは変です。テーブルのクラスがどのように見えるかを質問に反映させることもできます。 – Gasper
合意。私はデータベースからモデルを再構築しようとしており、質問を更新します。 –