Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 比较ID';ASP.NETMVC中的两个表_C#_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# 比较ID';ASP.NETMVC中的两个表

C# 比较ID';ASP.NETMVC中的两个表,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我有两张桌子 作者表--AuthID PK 合同表--AuthID FK 我想将合同视图“作者姓名”框限制为尚未签订合同的作者 我想我可以用更多的代码来做,但我觉得有一种方法可以用一个简单的查询来做,我只是错过了它 这是我的密码: public ActionResult Create() { var contract = new Contract(); var allAuthors = db.Authors.Select(a => a.AuthI

我有两张桌子

作者表--AuthID PK

合同表--AuthID FK

我想将合同视图“作者姓名”框限制为尚未签订合同的作者

我想我可以用更多的代码来做,但我觉得有一种方法可以用一个简单的查询来做,我只是错过了它

这是我的密码:

 public ActionResult Create()
    {
        var contract = new Contract();

        var allAuthors = db.Authors.Select(a => a.AuthID);
        var unusedAuthors = new List<Author>();
        foreach (var auth in allAuthors) {
            unusedAuthors = db.Contracts
                .Where(a => a.AuthID.GetHashCode() != auth.GetHashCode())
                .Select(a => a.Author).ToList();
        }




        ViewBag.AuthID = new SelectList(unusedAuthors, "AuthID", "AuthFirstName");
        return View(contract);
    }
public ActionResult Create()
{
var合同=新合同();
var allAuthors=db.Authors.Select(a=>a.AuthID);
var unuseauthors=新列表();
foreach(所有作者中的var auth){
UnuseAuthors=db.Contracts
.Where(a=>a.AuthID.GetHashCode()!=auth.GetHashCode())
.Select(a=>a.Author.ToList();
}
ViewBag.AuthID=新的选择列表(未指定作者、“AuthID”、“AuthFirstName”);
返回视图(合同);
}
您可以尝试以下方法:

 var unusedAuthors =
    (from a in db.Authors
    join c in db.Contracts on a.AuthID equals c.AuthID into lrs
    from lr in lrs.DefaultIfEmpty()
    where lr ==null
    select  a).ToList() ;
你可以这样做

var allAuthors = db.Authors.Select(a => a.AuthID).ToList();


var unusedAuthors = db.Contracts
                .Where(x => !(allAuthors.Contains(x.AuthID)))
                .Select(a => a.Author)
                .ToList();

无需使用
foreach

感谢您的回复-这看起来也会起作用