Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.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# LINQ to SQL中的子字符串和case语句_C#_Mysql_Sql Server_Linq_Linq To Sql - Fatal编程技术网

C# LINQ to SQL中的子字符串和case语句

C# LINQ to SQL中的子字符串和case语句,c#,mysql,sql-server,linq,linq-to-sql,C#,Mysql,Sql Server,Linq,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.goalcom

我正在将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)))
            };

索引和长度必须引用字符串中的位置。参数名称:长度这是我得到的异常。如果这是域名“Google\youtube”,我的期望值只是“youtube”还没有,我无法获得预期的域名,它将返回-1 gilad Green谢谢You@PankajErrolla-最后出现了什么问题?AliasName=p.DomainName==null?null:p.DomainName.Substring(p.DomainName.IndexOf(@“)+1,p.DomainName.Length-p.DomainName.IndexOf(@“)-1),通过这种方式,我解决了我的问题,现在面临来自两个不同表的分组的问题,我们如何做到这一点