C# IQueryableto 到 IEnumerable 使用 Linq 表达式和 class
C# IQueryableto to IEnumerable using Linq expressions and class
我有一个 class 应该使用连接从数据库中获取查询结果。
我的 class 是:
`
public class StepTwo
{
public int Id { get; set; }
public string Party { get; set; }
public string Currency { get; set; }
public string Account { get; set; }
public double? Amount { get; set; }
}
`
然后我创建了一个方法,它将 return 结果:
public IEnumerable<StageTwo> StepTwo()
{
var queryJoin = (from inn in db.Input.Take(10)
join yacc in db.AccY on inn.Action equals yacc.Action
orderby inn.Id descending
select new
{
inn.Id,
inn.XParty,
inn.Curr,
yacc.Action,
inn.Amount
});
return queryJoin;
}
在我没有使用连接的其他方法中,这工作正常,但现在不起作用。我在 return queryJoin;
上收到错误消息:
`
Cannot implicitly convert type 'System.Linq.IQueryable<<anonymous type: int Id, string XParty, string Curr, string YAction, double? Amount>>' to '
System.Collections.Generic.IEnumerable<Project.StepTwo>'. An explicit conversion exists (are you missing a cast?)`
我知道 class 名称与数据库名称有点不同,但我已尝试更改它们以匹配。根据上述错误,我认为是其他原因。
如有任何建议,我们将不胜感激。
您的错误消息告诉您 queryJoin
是匿名类型,但您试图将其强制为 IEnumerable<StageTwo>
,而 C# 无法进行该转换。
queryJoin
是匿名类型的原因是因为您没有在 linq 查询中定义它。所以要修复它,而不是这样:
select new
{
inn.Id,
inn.XParty,
inn.Curr,
yacc.Action,
inn.Amount
});
你想要这个:
select new StepTwo
{
Id = inn.Id,
Party = inn.XParty,
Currency = inn.Curr,
Account = yacc.Action,
Amount = inn.Amount
});
我有一个 class 应该使用连接从数据库中获取查询结果。
我的 class 是:
`
public class StepTwo
{
public int Id { get; set; }
public string Party { get; set; }
public string Currency { get; set; }
public string Account { get; set; }
public double? Amount { get; set; }
}
`
然后我创建了一个方法,它将 return 结果:
public IEnumerable<StageTwo> StepTwo()
{
var queryJoin = (from inn in db.Input.Take(10)
join yacc in db.AccY on inn.Action equals yacc.Action
orderby inn.Id descending
select new
{
inn.Id,
inn.XParty,
inn.Curr,
yacc.Action,
inn.Amount
});
return queryJoin;
}
在我没有使用连接的其他方法中,这工作正常,但现在不起作用。我在 return queryJoin;
上收到错误消息:
`
Cannot implicitly convert type 'System.Linq.IQueryable<<anonymous type: int Id, string XParty, string Curr, string YAction, double? Amount>>' to '
System.Collections.Generic.IEnumerable<Project.StepTwo>'. An explicit conversion exists (are you missing a cast?)`
我知道 class 名称与数据库名称有点不同,但我已尝试更改它们以匹配。根据上述错误,我认为是其他原因。
如有任何建议,我们将不胜感激。
您的错误消息告诉您 queryJoin
是匿名类型,但您试图将其强制为 IEnumerable<StageTwo>
,而 C# 无法进行该转换。
queryJoin
是匿名类型的原因是因为您没有在 linq 查询中定义它。所以要修复它,而不是这样:
select new
{
inn.Id,
inn.XParty,
inn.Curr,
yacc.Action,
inn.Amount
});
你想要这个:
select new StepTwo
{
Id = inn.Id,
Party = inn.XParty,
Currency = inn.Curr,
Account = yacc.Action,
Amount = inn.Amount
});