簡體   English   中英

將單個查詢結果添加到列表

[英]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> ),在添加到結果列表之前,應在查詢上調用FirstSingle

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.

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