Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server Linq查询因Concat运算符而失败_Sql Server_Entity Framework_Linq_Wcf - Fatal编程技术网

Sql server Linq查询因Concat运算符而失败

Sql server Linq查询因Concat运算符而失败,sql-server,entity-framework,linq,wcf,Sql Server,Entity Framework,Linq,Wcf,我正在努力发展银行体系。我试图将三个表记录合并到一个表中。但问题是,当我编译它时,我得到了以下错误 错误CS1929“IEnumerable”不包含“Concat”的定义,而最佳扩展方法重载“Queryable.Concat(IQueryable,IEnumerable)”需要“IQueryable”类型的接收器 这是Linq查询 public string TranscationDetails(string Account_Number) { va

我正在努力发展银行体系。我试图将三个表记录合并到一个表中。但问题是,当我编译它时,我得到了以下错误

错误CS1929“IEnumerable”不包含“Concat”的定义,而最佳扩展方法重载“Queryable.Concat(IQueryable,IEnumerable)”需要“IQueryable”类型的接收器

这是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
            }
        }
这是数据库记录

这是模型课。

公共字符串转换详细信息(字符串帐号)
{
var accountNumber=int.Parse(Account_Number);//最好使用TryParse
List accountTransactions=新列表();
使用(HalifaxDatabaseEntities上下文=新HalifaxDatabaseEntities())
{
accountTransactions.AddRange(context.Current\u Account\u Deposit.Where(x=>x.Account\u Number==accountNumber)。选择(w=>new AccountTransaction
{
AccountNumber=w.账户编号,
存款=0,
取款=w.金额,
日期=w.日期,
费用=0
}).ToList());
accountTransactions.AddRange(context.Current\u Account\u draw.Select(d=>new AccountTransaction
{
AccountNumber=d.账户编号,
存款=d.金额,
撤回=0,
日期=d.日期,
费用=0
}).OrderBy(r=>r.Date).ToList());
accountTransactions.AddRange(context.Current\u Account\u Details.Select(e=>new AccountTransaction
{
//您应该执行与您想要连接的相同的匿名类型
AccountNumber=e.账户编号,
存款=账户余额,
撤回=0,
日期=空,
费用=电子账户费用
}).ToList());
var inOut=账户交易;
var js=new System.Web.Script.Serialization.JavaScriptSerializer();
返回js.Serialize(inOut);//返回JSON字符串
}
}
公共类AccountTransaction
{
public int AccountNumber{get;set;}
公共十进制存款{get;set;}
公共十进制取款{get;set;}
公共字符串日期{get;set;}
公共十进制费用{get;set;}
}

Lol
concat
-你不知道。你需要一个
join
你的意思是我应该用join而不是concat。事实上,你所做的是疯狂的。你至少可以不使用动态类型。创建一个您希望所有这些记录进入的适当类。然后在
上选择new
,这样可以避免一些问题。然后您需要的是将
AddRange
函数添加到concat列表。我收到了很多建议,我正在进行更改,但仍然未能解决问题。您正在尝试从
当前帐户详细信息中添加
帐户费用。如果您决定这样做,您需要将
Account\u Fees=(decimal?.null
添加到其他两个
Select
s,并添加一个假的
Date=DateTime。现在
添加到最后一个
Select
。这将确保所有三个列表使用相同的匿名类型。我更新了它,将满足您的所有需要。伙计,您还没有告诉我您的属性是什么。您正在尝试合并3个不同的类别:活期存款、活期提款、活期明细。我不知道他们实际上没有日期,所以要根据情况调整类。为什么数据库中的日期格式不同?那太糟糕了。这是学校的练习吗?你自己做吧,你最初的问题是关于解决一个问题。使用一个合适的类可以解决这个问题,不要拖累我去解决你所有的问题,如果你让Date成为一个字符串,我会投反对票并报告你的问题,有那么难吗?
 public string TranscationDetails(string Account_Number)
        {

            var accountNumber = int.Parse(Account_Number);//It could be better to use TryParse
            List<AccountTransaction> accountTransactions = new List<AccountTransaction>();
            using (HalifaxDatabaseEntities context = new HalifaxDatabaseEntities())
            {
                accountTransactions.AddRange(context.Current_Account_Deposit.Where(x => x.Account_Number == accountNumber).Select(w => new AccountTransaction
                {
                    AccountNumber = w.Account_Number,
                    Deposit = 0,
                    Withdrawal = w.Amount,
                    Date = w.Date,
                    Fee = 0
                }).ToList());

                accountTransactions.AddRange(context.Current_Account_Withdraw.Select(d => new AccountTransaction
                {
                    AccountNumber = d.Account_Number,
                    Deposit = d.Amount,
                    Withdrawal = 0,
                    Date = d.Date,
                    Fee = 0
                }).OrderBy(r => r.Date).ToList());

                accountTransactions.AddRange(context.Current_Account_Details.Select(e => new AccountTransaction
                {
                    //You should perform same anonymous type which you want to concat
                    AccountNumber = e.Account_Number,
                    Deposit = e.Account_Balance,
                    Withdrawal = 0,
                    Date = null,
                    Fee = e.Account_Fees
                }).ToList());

                var inOut = accountTransactions;



                var js = new System.Web.Script.Serialization.JavaScriptSerializer();

                return js.Serialize(inOut); // return JSON string
            }
        }

public class AccountTransaction
{
    public int AccountNumber { get; set; }
    public decimal Deposit { get; set; }
    public decimal Withdrawal { get; set; }
    public string Date{ get; set; }
    public decimal Fee { get; set; }
}