[英]Add a single query result to a List
我需要能夠從ASP.NET DropDownList
搜索單個名稱,然后將具有該名稱的player
添加到列表中。
我的查詢如下所示:
List<Player> players = new List<Player>();
var p1 = from p in db.Players
where p.PlayerName == DropDownListPlayer1.SelectedItem.Text
select p;
然后,我需要以某種方式將此結果添加到列表中,但是
players.Add(p1);
給我兩個錯誤:
無法從“ System.Linq.IQueryable”轉換為“ Player”
和:
“ System.Collections.Generic.List.Add(Player)”的最佳重載方法匹配具有一些無效的參數。
我嘗試讓查詢選擇Player的新實例代替:
var p1 = from p in db.Players
where p.PlayerName == DropDownListPlayer1.SelectedItem.Text
select new Player {PlayerName = p.PlayerName,
PlayerId = p.PlayerId};
除了將結果發送到列表,並將列表中的第一個(也是唯一的)播放器添加到新列表之外,所有操作均無濟於事。
您的查詢返回多個結果,但是“ Add
方法只期望一個結果。 相反,您可以使用函數AddRange
添加多個結果:
players.AddRange(p1.ToList());
我還調用ToList
以立即在數據庫上執行查詢。
如果在嘗試執行上述代碼時列表players
為空,則更好的方法是使用方法ToList()
創建列表:
List<Player> players = (from p in db.Players
where p.PlayerName == DropDownListPlayer1.SelectedItem.Text
select p).ToList();
您正在尋找一個單一名稱,但是Select
返回一個序列( IQueryable<Player>
),在添加到結果列表之前,應在查詢上調用First
或Single
:
var p1 = (from p in db.Players
where p.PlayerName == DropDownListPlayer1.SelectedItem.Text
select p).First();
players.Add(p1);
var p1 = (from p in db.Players
where p.PlayerName == DropDownListPlayer1.SelectedItem.Text
select new Player {PlayerName = p.PlayerName,
PlayerId = p.PlayerId}
).FirstOrDefault();
if(p1 != null)
{
players.Add(p1);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.