【发布时间】:2017-12-22 01:17:25
【问题描述】:
我正在尝试开发银行系统。我试图将三个表记录加入到单个表中。但问题是当我编译它时出现以下错误。
错误 CS1929 'IEnumerable' 不包含 'Concat' 的定义,并且最佳扩展方法重载 'Queryable.Concat(IQueryable, IEnumerable)' 需要类型为 '可查询
这是 Linq 查询。
public string TranscationDetails(string Account_Number)
{
var accountNumber = int.Parse(Account_Number);//It could be better to use TryParse
using (HalifaxDatabaseEntities context = new HalifaxDatabaseEntities())
{
var q1 = context.Current_Account_Deposit.Where(x => x.Account_Number == accountNumber).Select(w => new
{
w.Account_Number,
Deposit = (decimal?)null,
Withdrawal = (decimal?)w.Amount,
w.Date
}).ToList();
var q2 = context.Current_Account_Withdraw.Select(d => new
{
d.Account_Number,
Deposit = (decimal?)d.Amount,
Withdrawal = (decimal?)null,
d.Date
}).OrderBy(r => r.Date).ToList();
var q3 = context.Current_Account_Details.Select(e => new
{
//You should perform same anonymous type which you want to concat
Account_Number = e.Account_Number,
Deposit = (decimal?)e.Account_Balance,
Withdrawal = (decimal?)null,
e.Account_Fees
}).ToList();
var inOut = q1.Concat(q2).Concat(q3).ToList();**//Error on this line**
var js = new System.Web.Script.Serialization.JavaScriptSerializer();
return js.Serialize(inOut); // return JSON string
}
}
【问题讨论】:
-
大声笑
concat- 你是菜鸟。你需要一个join -
你的意思是我应该使用 join 而不是 concat
-
其实不,你在做的是疯了。您至少可以不使用动态类型吗?创建一个您希望所有这些记录进入的适当类。然后在您的
select new <thenewclass>上,这将避免一些问题。那么你想要的是AddRange函数来连接列表。 -
我得到了很多建议,我正在做出改变,但我还是没能解决它
-
您正在尝试从
Current_Account_Details添加Account_Fees。如果你决定走这条路线,你需要在另外两个Selects 中添加Account_Fees = (decimal?)null,并在最后一个Select中添加一个假的Date = DateTime.Now。这将确保所有三个列表都使用相同的匿名类型。
标签: sql-server entity-framework linq wcf