簡體   English   中英

C#-在列表中使用WHERE子句中的數組搜索

[英]C# - Search in List with array in WHERE clause

C#

好吧,我有這樣的事情:

var message = db.Table<Message>().Where(cond => cond.ID == messageID).Single();
message.Status = status;

但是我想將我的messageIDint更改為int[] ,所以我將選擇cond.ID在我的int[] messageID所有數據。 我需要類似.Where(cond => cond.ID IN messageID) 我不想這樣:

foreach(var ID in messageID)
{
   message = db.Table<Message>.Where(cond => cond.ID == ID).Single();
   message.Status = status;
   db.Update(message);
}

我使用SQLite,任何有關一次更新多行的幫助將不勝感激。

可以做到這一點:

var messages = db.Table<Message>().Where(msg => messageIDs.Contains(msg.ID));

我認為這應該有效。

var message = db.Table<Message>().Where(cond => messageIDs.Any(id => cond.ID == id).Single();
message.Status = status;

像這樣:

var messageIDs = new int[]; // assume it's filled
var result = db.Table<Message>().Where(cond => messageIDs.Contains(cond.ID));

foreach(var message in result)
    message.Status = status;

db.SaveChanges(); //or something similar.

它將返回測試數組中存在ID的所有消息。

建議: Contains可以在SQL中轉換為OR 它可能表現不佳。 特別是應用於string

同時,您可以使用foreach循環設置每條消息的status 您正在使用的ORM可能具有db.SaveChanges類的db.SaveChanges ,它應該向數據庫發送一個更新查詢。

使用.contains()方法

var message = db.Table<Message>().Where(cond => messageID.contains(cond.ID)).Single();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM