我在使用此linq查询时遇到以下错误:
LINQ to Entities无法识别方法'System.Collections.Generic.List 1[System.Char] ToList[Char](System.Collections.Generic.IEnumerable
1 [System.Char])'方法,并且此方法无法转换为商店表达式。
var result =
(
from citation in Db.Citation
where citation.IsActive == true
select new CitationViewModel
{
CitationID = citation.CitationID,
CitationTitle = citation.CitationTitle,
DocType = citation.DocType,
DateOfPub = citation.DateOfPub,
authors = citation.citation_Authors.Where(c => c.CitationID == citation.CitationID).SelectMany(b => b.Author.AuthorName).ToList(),
}
);
这是我的视图模型:
public class CitationViewModel
{
public int CitationID { get; set; }
public string CitationTitle { get; set; }
public IList<char> authors { get; set; }
}
提前致谢。
答案 0 :(得分:0)
我建议像这样修改你的代码(注意现在如何初始化 authors 属性):
var result =
(
from citation in Db.Citation
where citation.IsActive == true
select new CitationViewModel
{
CitationID = citation.CitationID,
CitationTitle = citation.CitationTitle,
DocType = citation.DocType,
DateOfPub = citation.DateOfPub,
authors = new List<char>(citation.citation_Authors.Where(c => c.CitationID == citation.CitationID).SelectMany(b => b.Author.AuthorName)),
}
);
答案 1 :(得分:0)
如果您将IList<char> authors
中的CitationViewModel
属性更改为
public IEnumerable<string> authors { get; set; }
然后移除投影中的ToList()
来电。 SelectMany(b => b.Author.AuthorName)
会返回IEnumerable<string>
。