C# 使用实体框架并检查另一个表中是否存在userid

C# 使用实体框架并检查另一个表中是否存在userid,c#,json,visual-studio-2010,asp.net-mvc-3,entity-framework,C#,Json,Visual Studio 2010,Asp.net Mvc 3,Entity Framework,使用MVC3、EntityFramework 4、C#和VS 2010,我得到了以下结果: foreach (var person in _db.People.OrderByDescending(p => p.LastUpdated)) { data.Add(new List<string> { person.UserId, person.FullNa

使用MVC3、EntityFramework 4、C#和VS 2010,我得到了以下结果:

foreach (var person in _db.People.OrderByDescending(p => p.LastUpdated))
        {
            data.Add(new List<string>
            {
                person.UserId,
                person.FullName,
                person.Title
            }    
        }

return Json(data, JsonRequestBehavior.AllowGet);
foreach(变量person在_db.People.OrderByDescending中(p=>p.LastUpdated))
{
添加数据(新列表)
{
person.UserId,
person.FullName,
人名
}    
}
返回Json(数据,JsonRequestBehavior.AllowGet);
我想添加一个列/字段,用于检查另一个实体对象,以查看该人员是否存在于另一个表中,如果存在/不存在,则显示一个Y/N


我将如何处理此问题?

您需要在该实体和另一个表之间进行LINQ/Lambda外部联接。联接后另一个表中的任何空值都表示该人员仅存在于第一个表中。我目前没有时间编写解决方案,但我很乐意在上午这样做


您的Json列表结构也是错误的。

如果我的猜测是正确的,您希望字符串列表中的另一列告诉您“Y”(如果有人在该表中),如果没有,则告诉您“N”。尝试这样做:

foreach (var person in _db.People.OrderByDescending(p => p.LastUpdated))
        {
            data.Add(new List<string>
            {
                person.UserId,
                person.FullName,
                person.Title,
                (_db.AnotherTable.Where(p => p.personID == person.personID).FirstOrDefault() == null? "Y": "N")
            }    
        }
foreach(变量person在_db.People.OrderByDescending中(p=>p.LastUpdated))
{
添加数据(新列表)
{
person.UserId,
person.FullName,
人,头衔,,
(_db.AnotherTable.Where(p=>p.personID==person.personID.FirstOrDefault()==null?“Y”:“N”)
}    
}

将外键添加到人员表是正确的。 然后可以直接从对象访问关系。 像这样的

foreach (var person in _db.People.OrderByDescending(p => p.LastUpdated))
{
   data.Add(new List<string>
   {
        person.UserId,
        person.FullName,
        person.Title,
        person.SomePeople2.Any() ? "Y" : "N"
    }    
}

return Json(data, JsonRequestBehavior.AllowGet);

什么是数据?你的两个表在哪里?如果你使用LINQ,你不需要块。就是这样!为了我们的目的,我不得不交换“Y”和“N”,但它工作起来很有魅力。它确实会让应用程序慢一点,但它工作得很好。非常感谢你!很高兴帮助@sharcfinz。如果你喜欢这个答案,请不要忘记投票。谢谢。
foreach (var person in _db.People.OrderByDescending(p => p.LastUpdated))
{
   data.Add(new List<string>
   {
        person.UserId,
        person.FullName,
        person.Title,
        (_db.SomePeople2.Any(x=>x.UserId == p.UserId) ? "Y" : "N")
    }    
}

return Json(data, JsonRequestBehavior.AllowGet);
return Json(
    _db.People.OrderByDescending(p =>
            p.LastUpdated
        ).Select(p => 
            new
            {
                ID = person.UserId,
                Name = person.FullName,
                Title = person.Title,
                InOtherTable = _db.SomePeople2.Any(x=>x.UserId == p.UserId)
            }
        ).ToArray(),
    JsonRequestBehavior.AllowGet
);