首先讓我先說我不確定如何標題,我為此道歉。如果有什麼東西讓我感到震驚,或者你是聰明的我會編輯它。

我的問題是:

public IActionResult(string deckList //comma-separated-string of numeric characters which represent id's)
{
var cards = _context.Cards;
var deckListArray = deckList.Split(',');
foreach (var id in deckListArray)
{
int x = Convert.ToInt32(id);
cards = cards.Where(c => c.ID == id);
}

好吧,所以我知道在循環中查詢至少是因為性能問題而不得不說,但是這個IQueryable集合甚至不能正確填充這段代碼。

什麼是適當的查詢來獲得在數組中找到id的所有卡?

一般承認的答案

var ids =  decklist.Split( ',' )
    .Select( id => Convert.ToInt32( id ) )
    .ToArray();

var cards = _context.Cards.Where( c => ids.Contains( c.ID ) );


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因