クエリ MULTIPLE TABLES で LINQ NOT EXISTS を実行したいと考えています。
GoogleまたはSOのすべての例は、私が3つで作業している2つのテーブルを処理しているため、LINQの初心者としてそれらを正しく参照する方法について苦労しています。
最初にこのLINQクエリを試しました
var nocertificates = (
from x in rmdb.t_certificates
from ce in rmdb.t_user_certificates
from u in rmdb.t_users
where u.id == ce.uid && ce.value != x.id
select x).AsEnumerable().Select(x => new ViewModelCheckBox()
{
Value = x.id.ToString(),
Name = x.name,
Checked = false
});
参加するための型を作成するのが苦手なので、醜いを から 3 回使用しました。しかし、それは間違った結果をもたらし、私はNOT EXISTSに行かなければならないことに気付きました
そこで、T-SQL で新しいクエリを作成しました
これが機能する SQL クエリです。
select distinct * from t_certificates tc
where NOT EXISTS
(
select distinct * from t_users tu, t_user_certificates tuc
WHERE tu.email = 'user@email.com'
and tu.id = tuc.[uid]
and tuc.value = tc.id
)
LINQでそれを行うにはどうすればよいですか?
これが質問です、私はそれに対する私の答えを授与します!
しかし!
私たちがそこにいるとき...私は答えに本当に興味があります..EXISTSとNOT EXISTSの両方でIenumerableを返すLINQクエリを1つ実行して、チェックされた上で異なる値を保持するオブジェクトを生成することは可能ですか?プロパティが存在する
-> CHECKED = true 存在し
ない -> CHECKED = false
これが私のオブジェクトを作成する方法です。
.Select(x => new ViewModelCheckBox()
{
Value = x.id.ToString(),
Name = x.name,
Checked = this should be different based on exists or not
});