データベースへの複数のトリップを回避するために、いくつかのSQLクエリをLinqに変換しようとしています。
私が変換しようとしている古いSQLは次のようになります。
SELECT
AVG(CAST(DATEDIFF(ms, A.CreatedDate, B.CompletedDate) AS decimal(15,4))),
AVG(CAST(DATEDIFF(ms, B.CreatedDate, B.CompletedDate) AS decimal(15,4)))
FROM
dbo.A
INNER JOIN
dbo.B ON B.ParentId = A.Id
そこで、2つのC#クラスを作成しました。
class B
{
public Guid Id { get; set; }
public DateTime CreatedDate { get; set; }
public DateTime CompletedDate { get; set; }
}
class A
{
public Guid Id { get; set; }
public DateTime CreatedDate { get; set; }
public List<B> BList { get; set; }
}
そしてList<A>
、クエリしたいオブジェクトがあります。これはデータベースから入力されるため、リスト内の各Aには、Bの負荷を持つサブリストがあります。Linq-to-objectsを使用してこのリストをクエリしたいと思います。
したがって、Linqを使用して、Aの開始から子Bの完了までの平均時間、および各Bの開始から完了までの平均時間を取得する必要があります。私は元のSQLを作成しなかったので、それが想定どおりに機能するかどうかは完全にはわかりません。
計算するこれらの平均のいくつかを持っているので、1つの魔法のLinqクエリ内でそれらすべてを実行したいと思います。これは可能ですか?