[英]C# - Search in List with array in WHERE clause
C#
好吧,我有這樣的事情:
var message = db.Table<Message>().Where(cond => cond.ID == messageID).Single();
message.Status = status;
但是我想將我的messageID
從int
更改為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.