我的代码应该检查两个条件并返回值但是当我尝试返回 q 时出现此错误
无法隐式转换类型' System.Collections.Generic.List<<匿名类型:字符串名称,字符串文件>>'到' System.Collections.Generic.List<串GT;
我尝试了所有内容,但没有任何工作也不知道设置List<string>
或将其设置为List<EF_Model.PDF>
,PDF是我模型中的DTO
这是我的代码
internal List<string> Customers_File(int _id)
{
using (var Context = new EF_Model.CoolerEntities())
{
var q = from c in Context.Customers
where c.Id == _id &&
c.Ref_PDF != null
select new { c.PDF.Name, c.PDF.File };
return q.ToList();
}
}
答案 0 :(得分:1)
您必须将匿名对象转换为字符串表示形式。(注意我使用C#6.0功能 - 字符串插值,您可以使用先前版本中的string.Format替换它。 例如:
return q.Select(x=>$"Name = {x.PDF.Name} File = {c.PDF.File}").ToList();
答案 1 :(得分:0)
您已将返回类型声明为字符串,但返回一个包含两个属性的匿名对象列表。那不会奏效。如果要返回字符串,则需要为每个列表项创建单个字符串。如果要返回对象更改返回类型
答案 2 :(得分:0)
您收到此错误是因为您已将Customers_File
定义为返回字符串列表。但是,您返回的列表q
不符合该描述。
在您的查询中,当您执行
时select new { c.PDF.Name, c.PDF.File };
..您正在制作Anonymous Type,并将其存储在集合q
中。此类型有两个字段,显然不 a string
。
一些可能的解决方案是:
List<object>
而不是List<string>
(不推荐)。List<dataClass>
答案 3 :(得分:0)
您需要使用属性
定义对象public class PdfInfo
{
public string Name{get;set;}
public string File{get;set;}
}
从您的方法中返回它们的列表
internal List<PdfInfo> Customers_File(int _id)
最后投射到那些,取代匿名对象:
....
select new PdfInfo() { Name=c.PDF.Name, File = c.PDF.File };