Linq to sql 嵌套linq到sql查询
我描述了数据库表的外观。所以,Linq to sql 嵌套linq到sql查询,linq-to-sql,nested,Linq To Sql,Nested,我描述了数据库表的外观。所以,contacts表有一个字段是xml类型。该字段中存储的是公司文件名,我需要读取它。我用这种方式试过: var result = ( from contact in db.Contacts join user in db.Users on contact.CreatedByUserID equals user.UserID orderby contact.ContactID desce
contacts
表有一个字段是xml
类型。该字段中存储的是公司文件名,我需要读取它。我用这种方式试过:
var result = (
from contact in db.Contacts
join user in db.Users on contact.CreatedByUserID equals user.UserID
orderby contact.ContactID descending
select new ContactListView
{
ContactID = contact.ContactID,
FirstName = contact.FirstName,
LastName = contact.LastName,
Company = (
from field in contact.XmlFields.Descendants("Company")
select field.Value).SingleOrDefault().ToString()
}).Take(10);
但我得到以下错误:
成员访问的“System.String Value”
“System.Xml.Linq.XElement”不合法
正常型
'System.Collections.Generic.IEnumerable'1[System.Xml.Linq.XElement]
有什么解决办法吗
提前感谢,Ile这里的问题是LINQtoSQL试图将
子体
扩展方法和XElement.Value
转换为SQL,但它当然失败了。您必须使用LINQ对对象进行最后一次转换。这将有助于:
Company = (
from field in contact.XmlFields.Descendants("Company")
select field.Value).SingleOrDefault().ToString()
var-temp=(
来自数据库中的联系人。联系人
在数据库中加入用户。contact.CreatedByUserID上的用户等于user.UserID
orderby contact.ContactID递减
选择新的
{
contact.ContactID、contact.FirstName、contact.LastName、contact.xml字段
})
.采取(10);
var tempArray=temp.ToArray();
可数结果=
从tempArray中的contact
让公司=
(来自contact.XmlFields.subjections(“公司”)中的字段)
选择field.Value)
选择新建ContactListView()
{
ContactID=contact.ContactID,
FirstName=contact.FirstName,
LastName=contact.LastName,
Company=Company==null?null:Company.ToString()
}).采取(10);
是的,就是这个。我永远不会独自去想:)虽然,这不是一个真正实用的解决方案,但重要的是它能起作用。谢谢;)
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);