我有两张桌子:
public class Game
{
public int GameId { get; set; }
public int FirstTeamId { get; set; }
public int GoalsFirstTeam { get; set; }
public int GoalsSecondTeam { get; set; }
public int SecondTeamId { get; set; }
public Team Team { get; set; }
}
public class Team
{
public int Id { get; set; }
public string Name { get; set; }
public IEnumerable<Game> Games { get; set; }
}
然后,使用:
OperationDataContext dt = new OperationDataContext();
public ActionResult Scores()
{
List<Games> model = dt.Games.ToList();
var query = (from g in dt.Games
join t1 in dt.Teams on g.FirstTeamId equals t1.Id
join t2 in dt.Teams on g.SecondTeamId equals t2.Id
select new Games(){g.GameId,
t1.Name,
g.GoalsFirstTeam,
g.GoalsSecondTeam,
t2.Name
}
).ToList();
model = query;
return View(model);
我想在View中最终实现的是:
Game FirstTeam进球目标SecondTeam
1罗马1 3曼彻斯特
2 Inter 0 0 Milan
有人可以帮我解决这个问题,因为我收到了错误通知吗?
PS。当我尝试这个时:
OperationDataContext dt = new OperationDataContext();
public ActionResult Scores()
{
var games = dt.Games.ToList();
return View(games);
}
结果是:
Game FirstTeam进球目标SecondTeam
1罗马1 3罗马
2 Inter 0 0 Inter
答案 0 :(得分:0)
变化:
select new Games(){ g.GameId,
t1.Name,
g.GoalsFirstTeam,
g.GoalsSecondTeam,
t2.Name
}
以匿名类型:
select new { GameId = g.GameId,
Team1 = t1.Name,
Team2 = t2.Name,
Team1Goals = g.GoalsFirstTeam,
Team2Goals = g.GoalsSecondTeam
}
您还可以定义一个新类型 - GameResult
,其中包含上述字段。
答案 1 :(得分:0)
正如Erik建议您可以改进模型
public class Game
{
public int Id { get; set; }
public int FirstTeamId { get; set; }
public virtual Team FirstTeam { get; set; }
public int GoalsFirstTeam { get; set; }
public int GoalsSecondTeam { get; set; }
public int SecondTeamId { get; set; }
public virtual Team SecondTeam { get; set; }
//What does this mean??
public Team Team { get; set; }
}
public class Team
{
public int Id { get; set; }
public string Name { get; set;}
}
然后您可以这样查询数据
OperationDataContext dt = new OperationDataContext();
public ActionResult Scores()
{
var query = dt.Games.Select(g=> new
{
Game = g.Id,
FirstTeam = g.FirstTeam.Name,
Goals_FT = g.GoalsFirstTeam,
Goals_ST = g.GoalsSecondTeam,
SecondTeam = g.SecondTeam.Name
}
return View(query.ToList());
}
希望它清楚有用, 的Alessandro