我有一个查询,它反转字符并将反转后的第一个字母大写。在我的T-SQL中,它正在运行但是当我尝试将其转换为Linq查询时,我遇到的问题是
Reverse is not supported
这是我的工作查询
Upper(Left(REVERSE(Firstname),1))+Lower(Reverse(Left(Right(Firstname, LEN(Firstname)),LEN(Firstname)-1))) as NameReverse
// "Name" is the result without reverse, but after the reverse query, it will be
// "Eman"
这是我在linq中的反向工作
TheLengthOfName = name.FirstName.Reverse()
提前谢谢。
答案 0 :(得分:0)
感谢提供R. Martinho Fernandes的this answer和提供改进的RobinHood70,我为字符串反转创建了一个扩展方法:
public static string Reverse(this string s)
{
if(string.IsNullOrEmpty(s))
{
return s;
}
var info = new StringInfo(s);
var sb = new StringBuilder();
for(int i = info.LengthInTextElements - 1; i > -1 ; i--)
{
sb.Append(info.SubstringByTextElements(i, 1));
}
return sb.ToString();
}
我已经轻轻修改了Darren Sherwood的答案here,以便返回您想要的大写字符串:
public static string Capitalize(this string s)
{
if(string.IsNullOrEmpty(s))
{
return s;
}
var charArray = s.ToLower().ToCharArray();
charArray[0] = Char.ToUpper(charArray[0]);
return new string(charArray);
}
现在,要将它与linq查询结合起来,您需要这样的内容:
var query = from person in people
select person.FirstName.Reverse().Capitalize();