Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.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
C# 无法将mysql查询转换为linq语句_C#_Mysql_Linq_Linq To Sql_Sql To Linq Conversion - Fatal编程技术网

C# 无法将mysql查询转换为linq语句

C# 无法将mysql查询转换为linq语句,c#,mysql,linq,linq-to-sql,sql-to-linq-conversion,C#,Mysql,Linq,Linq To Sql,Sql To Linq Conversion,按预期工作的我的SQL查询: SELECT SUM(outcome), toaddress FROM lot l JOIN incomingpayment ip ON l.incomingpayment_id = ip.id WHERE outcome > 0 GROUP BY ip.toaddress ORDER BY SUM(outcome) DESC 我正试图将此转化为LINQ声明,但无论如何都没有取得很大成功: var result = from l in session.Q

按预期工作的我的SQL查询:

SELECT SUM(outcome), toaddress
FROM lot l
JOIN incomingpayment ip
ON l.incomingpayment_id = ip.id
WHERE outcome > 0
GROUP BY ip.toaddress
ORDER BY SUM(outcome) DESC
我正试图将此转化为LINQ声明,但无论如何都没有取得很大成功:

var result = 

from l in session.Query<Lot>().ToList()
join ip in session.Query<IncomingPayment>().ToList()
on l.IncomingPayment equals ip
where l.Outcome > 0
group ip by new {ip.ToAddress}
into g
select new
{
   Address = g.Key,
   SumAmount = g.Sum(x => x.Outcome)
};
var结果=
在session.Query().ToList()中从l开始
在session.Query().ToList()中加入ip
论收入报酬等于知识产权
其中l.结果>0
按新{ip.ToAddress}对ip进行分组
进入g
选择新的
{
地址=g.键,
SumAmount=g.Sum(x=>x.Outcome)
};
结果
在最后一行是一个
批次
字段,由于我正在分组
收入支付
组ip…
),因此在调用
g.Sum()
时不可用

我在这里遗漏了什么?

你可以试试这个:

var result = from g in (from l in session.Query<Lot>().ToList()
             join ip in session.Query<IncomingPayment>().ToList()
             on l.IncomingPayment equals ip.Id
             where l.Outcome > 0
             select new { Address = ip.ToToAddress, Outcome = l.Outcome})
             group g by g.Address
             select new
             {
                 Address = g.Key,
                 SumAmount = g.Sum(x => x.Outcome)
             };
var result=from g in(from l in session.Query().ToList())
在session.Query().ToList()中加入ip
在信用证上,收入等于ip.Id
其中l.结果>0
选择新{地址=ip.ToToLoadAddress,结果=l.Output})
g组按g地址分组
选择新的
{
地址=g.键,
SumAmount=g.Sum(x=>x.Outcome)
};
或者更确切地说:

Lots = session.Query<Lot>().ToList();
IncomingPayments = session.Query<IncomingPayment>().ToList();

var result = Lots.Join(IncomingPayments, 
                       x=>x.IncomingPayment,  
                       y=>y.Id,
                       (x,y) => new
                       {
                           Address = x.ToToAddress,
                           OutCome = y.Outcome
                       }).GroupBy(x => x.Address, 
                                  x => x.Outcome,
                                  (kew, group) =>
                                  {
                                      Address = key,
                                      SumAmount = group.Sum()
                                  });    
Lots=session.Query().ToList();
IncomingPayments=session.Query().ToList();
var结果=批量加入(收入支付,
x=>x.收入支付,
y=>y.Id,
(x,y)=>新
{
地址=x.ToToLoadAddress,
结果=y.结果
}).GroupBy(x=>x.地址,
x=>x.结果,
(邱,集团)=>
{
地址=键,
SumAmount=group.Sum()
});    

这似乎不起作用。它为
g.Sum()
返回“不明确调用”,并且
x.Outcome
仍然不可用。@DougPeters请给我几分钟时间更正它。谢谢你的邀请patient@DougPeters请尝试我的更新版本,并让我知道。谢谢这两个脚本似乎都不起作用,但我还是要对你的努力表示感谢。@DougPeters感谢你的支持,但我们的问题是为什么它们不起作用。你收到错误消息了吗?一条错误消息可以帮助我们找出哪里出了问题…结果的类型是什么?您使用的是什么ORM?为什么不创建适当的映射并完全避免连接呢?更好的是,创建一个视图并映射到它。LINQ不是SQL的替代品,尝试重新创建相同的查询通常会导致pain@EhsanSajjad
output
是一个
decimal
@PanagiotisKanavos,我在MySQL上使用NHibernate。这个域相当复杂,我现在无法更改映射,我必须更改数百行代码。我不知道如何创建视图,但感谢您的提示,如果找不到解决方案,我将检查它。创建新映射只需几行-在这种情况下,您只需添加两个实体之间的关系,就可以编写
myLot.Payments