我从查询中返回了一个IQueryable Anonymous类型,格式为:
EntityQueryable<<>f__AnonymousType1<g = Game, ghp = GameHasPlayer>>
我正在尝试构造一个类来接受此查询结果,以便我可以轻松地对其进行操作
public class GamesWithPlayers
{
public Game game { get; set; }
public GameHasPlayer gameHasPlayer { get; set; }
}
我已经设法通过使用
将匿名类型压缩为我更容易识别的类型var anonList = x.ToList() //Where x is the IQueryable of anonymous type`
我知道如何像这样填充我的包含类的一个实例:
GamesWithPlayers a = new GamesWithPlayers() { game = anonList[0].g, gameHasPlayer = anonList[0].ghp };
但是有没有办法将整个anonList
放入新的List<GamsWithPlayers>
中?
我尝试投射
List<GamesWithPlayers> gamesWithPlayers = (List<GamesWithPlayers>)y;
但是显然没有分配game = g, gameHasPlayers = ghp
,我也不知道该使用什么语法:/
答案 0 :(得分:5)
您想将IEnumerable<T>
的每个元素转换为其他元素。这正是Select
的作用。
您已经证明,给定匿名类的对象x
,可以像这样从其中创建一个GamesWithPlayers
:
new GamesWithPlayers() { game = x.g, gameHasPlayer = x.ghp }
您可以将此表达式传递给Select
:
var gamesWtihPlayersList =
anonList
.Select(x => new GamesWithPlayers() { game = x.g, gameHasPlayer = x.ghp })
.ToList();
这将应用于anonList
中的每个元素。