Я совершенно новичок в использовании LINQ и C# в целом, и пытаюсь изменить существующий API из узла / express, чтобы узнать, как он работает (мой первый проект в C#).
Мне кажется, я нашел ответы на этот вопрос, который мне трудно понять, потому что я использую лямбда-функции, а эти ответы, по большому счету, нет. Этот запрос был полностью функциональным, прежде чем я начал расширять его, чтобы добавить объединение (например, все из части where / orderby)
public async Task<ActionResult<IEnumerable<PitchingSeason>>> GetSeasonPitching(
[FromQuery] int season, [FromQuery] string? team, [FromQuery] int ip = 1)
{
var query = await _context.Masterpitching
.Join(_context.Teams,
pitching => pitching.TeamId,
team => team.TeamId,
(pitching, team) =>{??}) <-- not sure what to do here
.Select(obj => new PitchingSeason()) <-- or how to use the class here
.Where(
obj => obj.Season == season
&& obj.Ip > ip
&& (team == null || obj.TeamId == team))
.OrderBy(obj => obj.Fip)
.ToListAsync();
return query;
}
для сравнения, вот запрос, который я пытаюсь повторить из node.pg. Класс PitchingSeason включает все ключи, которые я выбираю в этом запросе. Последний оператор соединения и как использовать класс для выбора - вот где я застреваю
pool.query(`SELECT p.gidp,p.player,p.np,p.season,p.sho,p.bk,p.sv,p.bb,p.so,p.wp,p.hb,
p.rs,p.l,p.cg,p.player_id,p.gs,p.ibb,p.team_id,p.hr,p.era,p.fip,
p.hld,p.g,p.ip,p.w,p.r,p.er,t.name_abbrev,t.league_abbrev,t.name
FROM "${season}pitching" AS p INNER JOIN teams AS t ON p.team_id = t.team_id
WHERE p.ip > $1 ORDER BY fip ASC`, search)