如何从表中选择特定列?我试试这个显示错误 无法将类型'System.Linq.IQueryable'隐式转换为'System.Linq.IQueryable'。存在显式转换,您是否错过了演员?
var query = myRepository.Query().AsQueryable();
query = query.Select(f =>
new
{
f.Name,
f.Email,
f.Message,
f.Succeeded,
f.ExecutedOn,
f.CreatedOn,
f.DeletedOn
}).Where(file => file.DeletedOn == null).OrderByDescending(f => f.CreatedOn);
return query.ToList();
但是当我尝试这个时,它可以工作,
if (!String.IsNullOrEmpty(searchModel.Name))
{
query = query.Where(f =>f.Name.Contains(searchModel.Name));
}
query = query.Where(file => file.DeletedOn == null).OrderByDescending(file => file.CreatedOn);
答案 0 :(得分:4)
您的第一个查询是生成匿名类型。如果您需要Report
个对象列表,那么Select
调用中的Lambda必须创建一个Report
对象,即:
f =>
new
{
f.Name,
f.Email,
f.Message,
f.Succeeded,
f.ExecutedOn,
f.CreatedOn,
f.DeletedOn
}
应该是这样的:
f =>
new Report
{
f.Name,
f.Email,
f.Message,
f.Succeeded,
f.ExecutedOn,
f.CreatedOn,
f.DeletedOn
}
答案 1 :(得分:1)
创建新的Class对象,然后使用它
var result = from mr in myRepository
where mr.DeletedOn == null
orderby mr.CreatedOn descending
select new NewRepository
{
mr.Name,
mr.Email,
mr.Message,
mr.Succeeded,
mr.ExecutedOn,
mr.CreatedOn,
mr.DeletedOn
};
如果您有任何错误,请告诉我您的myRepository DataType
答案 2 :(得分:0)
您已使用IQueryable<Query>
类型初始化了查询,但后来分配了类型IOrderedQueryable<AnonymousType>
的值,因为两种类型都不匹配,这将导致编译时错误。这里的问题是内部类型(Query
,AnonymousType
)。请修改您的查询,如下所示。
var query = myRepository.Query().AsQueryable()
.Select(f =>
new
{
f.Name,
f.Email,
f.Message,
f.Succeeded,
f.ExecutedOn,
f.CreatedOn,
f.DeletedOn
}).Where(file => file.DeletedOn == null).OrderByDescending(f => f.CreatedOn);
return query.ToList();