请林帮忙.直接转换为Object而不是Var
本文关键字:Var Object 林帮忙 转换 | 更新日期: 2023-09-27 18:07:01
我一直通过迭代对象来忽略对LINQ的需求,但最近决定是时候抛弃老派方法,与时俱进了。
我想知道是否有人可以帮助我简化下面的代码,首先使用Lambda而不是老式的Linq,其次,下面的代码总是只返回1个值。。在这种情况下,我如何直接转换为正确的类型(Player(而不必再次迭代?
MyEntities entity = new MyEntities();
Guid selectedPlayerID = Guid.Parse(lbPlayers.SelectedItem.Value);
var player = from n in entity.Players
where n.ID == selectedPlayerID
select n;
foreach (var item in player)
{
tbPlayerSurname.Text = item.Name;
tbPlayerName.Text = item.Surname;
}
If实体。玩家包含玩家对象,您可以简单地指定
IEnumerable<Player> players = entity.Players
.Where(p => p.ID == selectedPlayerID);
我很难理解你的帖子,所以我最初的答案是只选择一个(阅读评论,我看到这就是你想要的(,你可以这样做:
Player player = entity.Players.Single(p => p.ID == selectedPlayerID);
如果不是唯一的错误,则会抛出和出错,您可以使用SingleOrDefault并检查null,甚至FirstOrNull,在这种情况下,如果有多个错误,则可能会吞下一个潜在的错误,并且应该会被捕获
var blahs = entity.Players.Where(x => x.ID == selectedPlayerID)
.Select(x => new blah() { Name = x.Name, Text = x.Surname);
这会给您一个IEnumerable<Blah>
。
这有道理吗?
您可以使用:
entity.Players.Single(n=>n.ID==selectedPlayerId);
如果您认为它可能不存在,请使用SingleOrDefault(并检查返回值是否与默认值不同,如果是类,则为null(。如果您只关心第一个,请使用first或FirstOrDefault。
如果**实体,请尝试下面的代码。玩家属于List<播放器>
List<Player> selectedPlayers = (from n in entity.Players
where n.ID == selectedPlayerID select n).ToList();
如果实体。玩家不是类型列表<播放器>
List<Player> selectedPlayers = (from n in entity.Players
where n.ID == selectedPlayerID
select new Player() { Name = n.Name, Surname = n.Surname } );