LINQ to SQL 中的子字符串和 case 语句
Substring and case statements in LINQ to SQL
我正在将 SQL 转换为 LINQ。有人可以帮助如何在 LINQ 中实现如下所示的子字符串和 case 语句。
SELECT p.goalcommitment,
g.goalmeasurement,
CASE g.goalmeasurement
WHEN 'Count' THEN CAST(p.goalcommitmentnumber AS VARCHAR)
WHEN 'Currency' THEN '$' + CAST(p.goalcommitmentcurrency AS VARCHAR)
WHEN 'Percentage' THEN RTRIM(CAST(p.goalcommitmentpercentage AS VARCHAR)) + '%'
ELSE p.pamwb_goalcommitment
END AS goalcommitment,
SUBSTRING(p.domainname, CHARINDEX('\', p.domainname, 0) + 1, LEN(p.domainname) - CHARINDEX('\', p.domainname, 0))
FROM Filtered_psp p
JOIN Filtered_goalsubtype g
ON g.goalsubtypeid = p.goalsubtype
这就是你的 sql 在 linq 中的样子:
var query = from p in Filtered_psp
join g in Filtered_goalsubtype on p.goalsubtype equals g.goalsubtypeid
let slashLocation = p.domainname.IndexOf(@"\")
select new
{
Field1 = p.goalcommitment,
Field2 = g.goalmeasurement,
Field3 = (p.goalmeasurement == "Count" ? p.goalcommitmentnumber.ToString() :
p.goalmeasurement == "Currency" ? "$" + p.goalcommitmentnumber.ToString() :
p.goalmeasurement == "Percentage" ? p.goalcommitmentnumber.ToString() + "%" : p.pamwb_goalcommitment),
Field4 = slashLocation == -1 ? (p.domainname : p.domainname.Substring(slashLocation + 1, p.domainname.Length - slashLocation - 1)))
};
我正在将 SQL 转换为 LINQ。有人可以帮助如何在 LINQ 中实现如下所示的子字符串和 case 语句。
SELECT p.goalcommitment,
g.goalmeasurement,
CASE g.goalmeasurement
WHEN 'Count' THEN CAST(p.goalcommitmentnumber AS VARCHAR)
WHEN 'Currency' THEN '$' + CAST(p.goalcommitmentcurrency AS VARCHAR)
WHEN 'Percentage' THEN RTRIM(CAST(p.goalcommitmentpercentage AS VARCHAR)) + '%'
ELSE p.pamwb_goalcommitment
END AS goalcommitment,
SUBSTRING(p.domainname, CHARINDEX('\', p.domainname, 0) + 1, LEN(p.domainname) - CHARINDEX('\', p.domainname, 0))
FROM Filtered_psp p
JOIN Filtered_goalsubtype g
ON g.goalsubtypeid = p.goalsubtype
这就是你的 sql 在 linq 中的样子:
var query = from p in Filtered_psp
join g in Filtered_goalsubtype on p.goalsubtype equals g.goalsubtypeid
let slashLocation = p.domainname.IndexOf(@"\")
select new
{
Field1 = p.goalcommitment,
Field2 = g.goalmeasurement,
Field3 = (p.goalmeasurement == "Count" ? p.goalcommitmentnumber.ToString() :
p.goalmeasurement == "Currency" ? "$" + p.goalcommitmentnumber.ToString() :
p.goalmeasurement == "Percentage" ? p.goalcommitmentnumber.ToString() + "%" : p.pamwb_goalcommitment),
Field4 = slashLocation == -1 ? (p.domainname : p.domainname.Substring(slashLocation + 1, p.domainname.Length - slashLocation - 1)))
};