かなり基本的なSQLコードをLamdaまたはLinqに変えようとしていましたが、私はどこにもいません。ここにSQLクエリがあります:SQLをLambda/Linqに変換
SELECT * FROM Form a
INNER JOIN FormItem b ON a.FormId = b.FormId
INNER JOIN FormFee c ON a.FormId = c.FormId
INNER JOIN FeeType d ON c.FeeTypeId = d.FeeTypeId
WHERE b.StatusId = 7
私はこれを試しましたが、私がしたいことはしません。
public Form GetFormWithNoTracking(int id)
{
return ObjectSet
.Where(x => x.FormId == id &&
(x.FormItem.Any(di => di.StatusId == (short)Status.Paid)))
.AsNoTracking()
.FirstOrDefault();
}
私は、そのStatusId
Paid
あるFormItem
からの行のみを返すようにしようとしています。しかし、上記はすべてを返します。 .Any()
は一致するものがあるかどうかをチェックし、返品がある場合はこの場合、このフォームのデータにはStatusId
のPaid
、返品のないStatusId
のアイテムモール。
linq lamdaを使用して内部結合を実行しようとしている場合、クイック検索で必要な結果が得られます。 http://stackoverflow.com/questions/2767709/c-sharp-joins-where-with-with- linq-and-lambda http://stackoverflow.com/questions/9720225/how-to-perform-join-between-multiple-tables-in-linq-lambda – dougajmcdonald
この関数は、 ) 'Form'には' StatusId''Paid'を持つ 'FormItem'があります。あなたの戻り値の型は 'Form'なので、実際に何をしようとしているのか全く分かりません。私があなたの質問を正しく理解していれば、あなたは 'FormId'が' Paid'である 'FormId'' id'を持つ 'Form'の' FormItems'だけを望んでいます。 –