[英]Using Entity Framework and check if userid exists in another table
使用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);
我想添加一列/字段来检查另一个实体对象,以查看该人是否存在于另一个表中,然后显示一个Y / N(如果存在/不存在)。
我将如何处理?
如果我的猜测是正确的,那么您希望字符串列表中的另一列告诉您该表上是否存在人员,如果是,则为“ 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")
}
}
您需要此实体与另一个表之间的LINQ / Lambda外部联接。 联接后另一个表中的任何空值都表示此人仅存在于第一个表中。 我目前没有时间编写解决方案,但很高兴在早上这样做
您的Json列表结构也是错误的。
向People表添加外键是正确的。 然后,您可以直接从对象访问关系。 像这样
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);
但是,如果您不想添加外键,则可以这样做。
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);
UPD规范化代码:
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
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.