C# 将MySQL查询转换为LinQ
我有一个MySQL查询:这是一个工作查询C# 将MySQL查询转换为LinQ,c#,mysql,sql,linq,C#,Mysql,Sql,Linq,我有一个MySQL查询:这是一个工作查询 SELECT cash.cash_id, cash.cash_name, articles_cellars.cellar_name, cash_status.cashstatus_name, CASE cash.cashstatus_id WHEN 1 THEN CONCAT_WS(' ', users.user_firstname, users.user_lastname)
SELECT cash.cash_id, cash.cash_name, articles_cellars.cellar_name, cash_status.cashstatus_name,
CASE cash.cashstatus_id
WHEN 1 THEN CONCAT_WS(' ', users.user_firstname, users.user_lastname)
WHEN 2 THEN '[No Asignado]'
END AS user_name,
CASE cash.cashstatus_id
WHEN 1 THEN (SELECT SUM(CASE WHEN cashtransactionstatus_id IN (1,3) THEN cashtransaction_amount END) -
SUM(CASE WHEN cashtransactionstatus_id IN (2,4,5) THEN cashtransaction_amount END)
FROM cash_transactions
WHERE cashpaymenttype_id = 1
AND cash_transactions.cashopeningassignment_id = cash_openings_assignments.cashopeningassignment_id)
WHEN 2 THEN 0.00
END AS cashtransaction_amount
FROM cash
LEFT JOIN articles_cellars USING(cellar_id)
LEFT JOIN cash_status USING(cashstatus_id)
LEFT JOIN cash_openings_assignments USING(cash_id)
LEFT JOIN users USING(user_id);
我需要知道是否存在将该语句自动转换为C LinQ的工具
我现在的LinQ:
var LINQFilter = from Cash in _DataTable_Cash.AsEnumerable()
join Cellars in _DataTable_Cellars.AsEnumerable()
on Cash.Field<Int32>("cellar_id") equals Cellars.Field<Int32>("cellar_id")
join CashStatus in _DataTable_CashStatus.AsEnumerable()
on Cash.Field<Int32>("cashstatus_id") equals CashStatus.Field<Int32>("cashstatus_id")
join CashOpeningsAssignments in _DataTable_CashOpeningsAssignments.AsEnumerable().Where(a => (a.Field<Int32>("cashopeningassignmentstatus_id") == 1 || a.Field<Int32>("cashopeningassignmentstatus_id") == 2)) // 1 Open ,2 Reopened Assignments
on Cash.Field<Int32>("cash_id") equals CashOpeningsAssignments.Field<Int32>("cash_id") into into_cashopeningsassignments
from CashOpeningsAssignments in into_cashopeningsassignments.DefaultIfEmpty()
join Users in _DataTable_Users.AsEnumerable()
on (CashOpeningsAssignments == null ? 0 : CashOpeningsAssignments.Field<Int32>("user_id")) equals Users.Field<Int32>("user_id") into into_users
from Users in into_users.DefaultIfEmpty()
select new
{
cash_id = Cash.Field<Int32>("cash_id"),
cellar_name = Cellars.Field<String>("cellar_name"),
cash_name = Cash.Field<String>("cash_name"),
cashstatus_name = CashStatus.Field<String>("cashstatus_name"),
user_name = (Users == null ? "[No Asignado]" : Users.Field<String>("user_firstname") + (Char)32 + Users.Field<String>("user_lastname")),
cashtransaction_amount = 0.00 // Sum Problem
};
但是我在获取cashtransaction_amount时遇到问题将SQL转换为Linq类似于Perl代码混淆竞赛:如果您使用的是EF,那么您可以在EF中运行原始SQL查询,因此如果您知道代码已经工作了,请使用它。否则,就转换的特定部分询问更具体的问题。Hy@BenjaminGruenbaum我需要得到cashtransaction\u amount列的结果