クライアントインターフェイスガイド > TDV用TIBCO ADO .NET 2020データプロバイダー > ADO.NET (LINQ)の使用 > LINQの削除
 
LINQ削除
このセクションでは、LINQを使用してTDVオブジェクトを削除するいくつかの方法について説明します。
エンティティへのLINQを使用したTDVオブジェクトの削除
次の例では、LINQクエリ構文を使用して削除するオブジェクトを取得してから、データモデルからオブジェクトを削除します。削除は、WHERE句のIDで選択された、一度に1つのレコードでのみ機能することに注意してください。
 
CompositeEntities context = new CompositeEntities();
var query = from Products in context.Products
where Products.Id == "22"
select Products;
context.Products.Remove(query.FirstOrDefault());
try {
context.SaveChanges();
} catch (Exception e) {
Console.Write(e.Message);
}
LINQ要素演算子の使用
SingleOrDefaultおよびFirstOrDefault要素演算子は、削除するオブジェクトを取得するための代替方法を提供します。これらの要素演算子を使用して、複数のレコードの削除を簡素化することもできます。
 
削除する単一のエンティティの選択
前のクエリと同じ結果を達成する別の方法は、SingleOrDefault要素演算子を使用することです。例えば:
 
CompositeEntities context = new CompositeEntities();
var Products = context.Products.SingleOrDefault(o => o.Id == "150000-933272658");
context.Entry(Products).State = System.Data.Entity.EntityState.Deleted;
context.SaveChanges();
 
一連のエンティティの削除
次の例では、ProductNameの値が「Konbu」に等しいレコードのグループを削除します。 LINQは、レコードのIDで指定されているように、レコードごとに一度に1つの削除操作のみを実行することに注意してください。このため、LINQは、レコードを削除するたびにデータソースとの新しい接続を開くため、パフォーマンスが低下します。
 
CompositeEntities context = new CompositeEntities();
var query = from Products in context.Products
where Products.ProductName == "Konbu"
select Products;
foreach (var result in query) {
var delete = from Products in context.Products
where Products.Id == result.Id
select Products;
context.Products.Remove(delete.FirstOrDefault());
}
try {
context.SaveChanges();
} catch (Exception e) {
Console.Write(e.Message);
}