あなた自身のコードはうまくいくでしょう。ただし、データベースからすべてのIDを取得するため、パフォーマンス上の問題が発生する可能性があるため、以下の方が効率的です。
var idsInDatabase =
from t in DataContext.Table
where idsOfInterest.Contains(t.ID)
select t.ID;
var idsDeletes = idsOfInterest.Except(idsInDatabase);
UPDATE:私は理解して、あなたの更新から
、あなたが存在しないIDを希望するので、行うのは非常に困難であるデータベースから、不足しているすべてのIDを取得したいと思いますもはやデータベースから。
普通のSQLでこれを実行しようとすると、参加する数字の大きなリスト{0,1,2,3、...}を含むテーブルが必要になります(Table
はすべてのIDをもう含まない)、または内部クエリまたはテーブル値関数を作成します。これは次のようになります。
SELECT x.id
FROM (
SELECT 1 as id
UNION ALL
SELECT 2
UNION ALL
SELECT 3
UNION ALL
SELECT 3) x
LEFT OUTER JOIN Table t ON x.id = t.ID
WHERE t.ID IS NULL
私が知る限り、このような構成をLINQ to SQLに変換する方法はありません。テーブル値関数についても同じことが言えます。
Table
にはNumbers
というテーブルを参加させることができますが、私は個人的にそれをしません。
ご質問はありますか? –
@RoyDictus質問を追加しました。ありがとうございます! – jaraics