CData ADO.NET Provider for Excel Online 2019J - Online Help

LINQ 削除

CData ADO.NET Provider for Excel Online 2019J - Build 19.0.7354

このセクションでは、LINQ を使用してExcel Online オブジェクトを削除するいくつかの方法を説明します。

LINQ to Entities でのExcel Online オブジェクトの削除

次の例は、LINQ クエリ構文を使用して削除するオブジェクトを取得し、データモデルからオブジェクトを削除します。削除は、WHERE 句のId で選択された1つのレコードに対してのみ実行されることに注意してください。

ExcelOnlineEntities context = new ExcelOnlineEntities();

var query = from Test_xlsx_Sheet1 in context.Test_xlsx_Sheet1
            where Test_xlsx_Sheet1.Id == "6"
            select Test_xlsx_Sheet1;

context.Test_xlsx_Sheet1.Remove(query.FirstOrDefault());

try {
  context.SaveChanges();
} catch (Exception e) {
  Console.Write(e.Message);
}

LINQ 要素演算子の使用

SingleOrDefault およびFirstOrDefault 要素演算子は、削除するオブジェクトを取得する別の方法を提供します。これらの要素演算子を使用して、複数のレコードの削除を簡略化することもできます。

削除する単一エンティティの選択

SingleOrDefault 要素演算子を使う方法でも、先のクエリと同様の結果が得られます。次に例を示します。

  ExcelOnlineEntities context = new ExcelOnlineEntities();
  var Test_xlsx_Sheet1 = context.Test_xlsx_Sheet1.SingleOrDefault(o => o.Id == "150000-933272658");
  context.Entry(Test_xlsx_Sheet1).State = System.Data.Entity.EntityState.Deleted;
  context.SaveChanges();

エンティティのセットの削除

次の例を実行すると、Column2 値が"Bob"であるレコードのグループが削除されます。LINQ は、レコードId の指定に基づいて、一度に1つのレコードを対象に1回だけ削除操作を実行します。このため、レコードを削除するたびにデータソースとの接続が新しく開かれるので、LINQ のパフォーマンスは大幅に低下します。

ExcelOnlineEntities context = new ExcelOnlineEntities();

var query = from Test_xlsx_Sheet1 in context.Test_xlsx_Sheet1
            where Test_xlsx_Sheet1.Column2 == "Bob"
            select Test_xlsx_Sheet1;

foreach (var result in query) {
  var delete = from Test_xlsx_Sheet1 in context.Test_xlsx_Sheet1
               where Test_xlsx_Sheet1.Id == result.Id
               select Test_xlsx_Sheet1;
  context.Test_xlsx_Sheet1.Remove(delete.FirstOrDefault());
}

try {
  context.SaveChanges();
} catch (Exception e) {
  Console.Write(e.Message);
}

 
 
Copyright (c) 2020 CData Software, Inc. - All rights reserved.
Build 19.0.7354.0