【发布时间】:2013-07-06 08:31:57
【问题描述】:
我正在尝试创建一个函数来获取类型为“tableContact”的 List(),它是一个实体(有点像当您执行简单的选择语句时:query.ToList();)
但这变得令人沮丧,因为我不断收到“空对象引用”错误。由于某种原因,“join”语句不起作用,所以我尝试了另一种 linq 语句。
我有一个 Object2Contacts 表,我想 LEFT JOIN,我正在查找我的对象并尝试查看该对象的所有联系人。我也不知道如何将“匿名类型”改回实体表。
也不是每个对象都有联系人,所以有时应该返回 null List。
public List<tableContact> getContactsForObject(int oid)
{
if (oid > 0)
{
var query = (from s in entities.tableContacts
from o in entities.tableObject2Contacts
where s.contact_id == o.contact_id
where o.object_id == oid
select new { s });
if (query != null)
{
IEnumerable<tableContact> e = (IEnumerable<tableContact>)query.ToList();
return (List<tableContact>)e;
}
}
return new List<tableContact>();
}
然后我想遍历返回的对象...例如:
foreach ( tableContact c in MyList){
WriteLine(c.Name);
}
编辑 我也试过了:
List<tableContacts> contacts = (from s in entities.tableContacts
join o in entities.tableObject2Contacts
on s.contact_id equals o.contact_id
where o.object_id == oid
select s).ToList();
然后我无法将它转换回 List 并且仍然是“空引用”。
编辑 2 是的,我正在运行的查询肯定会带来一个“空”列表。我不介意空列表,但它不应该给出“对象空引用”。
【问题讨论】:
标签: c# asp.net linq entity-framework entity-framework-4