0

私はモデルを持っています

public class GrandPrix
{
    public int Id { get; set; }

    [Required]
    [Display(Name = "Имя")]
    [DataType(DataType.Text)]
    public string Name { get; set; }

    public int LocationId { get; set; }

    public int? ChampionchipId { get; set; }

    public virtual Location Location { get; set; }
    public virtual Championchip Championchip { get; set; }
}
    public class Location
{
    public int Id { get; set; }

    [Required]
    [Display(Name = "Location")]
    [DataType(DataType.Text)]
    public string Name { get; set; }

//    public virtual ICollection<GrandPrix> GrandPrix { get; set; } 
}

変更する必要があります

ViewBag.LocationId = new SelectList(db.Locations, "Id", "Name");

db.Locations .Where(l=>l.id は db.Grandprix.Where(g=>g.ChampionchipId == 1) に含まれていません)

このクエリは機能します

SELECT Locations.Id as Id, Locations.Name as Name FROM dbo.Locations WHERE Locations.Id Not In (SELECT GrandPrixes.LocationId FROM GrandPrixes WHERE ChampionchipId = 1)

私の英語を申し訳ありませんが、助けてくれてありがとう。

4

1 に答える 1

1
db.Locations.Where(loc=>loc.GrandPrixes.Any(gp=>gp.ChampionshipId != 1))

FK 関係が適切に設定されていれば、場所が表示されます。

そうしないと

var gps = db.GrandPrixes.Where(gp=>gp.ChampionshipId == 1)
                        .Select(gp=>gp.Location.LocationId).ToList();
db.Locations.Where(loc=>!gps.Any(gp=>gp == loc.LocationId))
于 2012-10-15T01:56:13.690 に答える