这里的问题是Linq to SQL正在尝试转换
Descendants
扩展方法和
XElement.Value
到SQL,但它当然失败了。您必须使用linq to对象进行最后一次转换。这是可行的:
var temp = (
from contact in db.Contacts
join user in db.Users on contact.CreatedByUserID equals user.UserID
orderby contact.ContactID descending
select new
{
contact.ContactID, contact.FirstName, contact.LastName, contact.XmlFields
})
.Take(10);
var tempArray = temp.ToArray();
IEnumerable<ContactListView> result =
from contact in tempArray
let company =
(from field in contact.XmlFields.Descendants("Company")
select field.Value).SingleOrDefault()
select new ContactListView()
{
ContactID = contact.ContactID,
FirstName = contact.FirstName,
LastName = contact.LastName,
Company = company == null ? null : company.ToString()
}).Take(10);