私は、Idのような主キーとLastMeterReadingId(同じテーブルを参照する外部キー)のような列を含むテーブルを持っています - 親メーターの読み方のようなものです。自己参加型LINQでのクエリ
私はすでに親のように使用されていないすべての行を取得したいと思います。私はメートルの読みが1メートル以上の読書の親である状況を避けたいです。
私は同じテーブルに参加する方法を知っていますが、すでに親ではないレコードだけを選択する方法はわかりません。これは、条件文なしでクエリがどのように見えるかです。
return (from m in uow.MeterReadingReadWriteRepository.Query()
join parent in uow.MeterReadingReadWriteRepository.Query() on m.Id equals parent.LastMeterReadingId
select new MeterReadingDto()
{
(...)
}).ToList();
効果的な方法で実現する方法はありますか?
よろしくお願いいたします。
通常、このように、テーブルを列挙する再帰的なメソッドを記述します。 Linqは親の子の参加には問題ありませんが、複数世代のLINQでは良い結果は得られません。 – jdweng
まず、私はこれが通常の形に違反していると主張します。メーターの読書は、単にメーターの読書日によってソートすることによって得ることができる別の情報の子であるかどうかではないからです。また、連鎖してチェーンの途中でレコードを削除するとどうなりますか?あなたはその事件でちょっとねじれていませんか? –