Trim 字符串如果在 Linq 中不为空
Trim string if not null in Linq
我在使用旧数据库和 linq to sql 时遇到了这个反复出现的问题,它使用固定长度的 char 数据类型。
当我 return 字符串时,它总是在末尾有填充,如果我想在 select 语句中连接两个字符串,我总是需要在这样做之前检查是否不为空,例如:
return (from person in personRepository.Get(p => p.FIRSTNAME.StartsWith(firstName)
|| p.SURNAME.StartsWith(surname) || p.DOB == dob)
select new PersonSearchModel
{
FullUserName = (person.SURNAME ?? "").Trim() + ", "
+ (person.FIRSTNAME ?? "").Trim() + " "
+ (person.MIDDLENAME ?? "").Trim()
}).ToList();
有没有更好的方法?我可以在数据库上下文中设置自动 trim 字符串的内容吗?
我最终更改了 t4 模板,以便 类 生成自动修剪的字符串(如果它们不为 null,否则它们返回 null)。
public string Property(EdmProperty edmProperty)
{
string type = _typeMapper.GetTypeName(edmProperty.TypeUsage);
string propertyName = _code.Escape(edmProperty);
if(type == "string"){
return string.Format(
CultureInfo.InvariantCulture,
"private {1} _{6}; {5} \t{0} {1} {2} {{ {5}\t\t{3}get{{return _{6} == null ? null : _{6}.Trim();}} {5}\t\t{4}set{{ _{6} = value;}} }}",
Accessibility.ForProperty(edmProperty),
type,
propertyName,
_code.SpaceAfter(Accessibility.ForGetter(edmProperty)),
_code.SpaceAfter(Accessibility.ForSetter(edmProperty)),
Environment.NewLine,
propertyName.ToLower()
);
}else{
return string.Format(
CultureInfo.InvariantCulture,
"{0} {1} {2} {{ {3}get; {4}set; }}",
Accessibility.ForProperty(edmProperty),
_typeMapper.GetTypeName(edmProperty.TypeUsage),
_code.Escape(edmProperty),
_code.SpaceAfter(Accessibility.ForGetter(edmProperty)),
_code.SpaceAfter(Accessibility.ForSetter(edmProperty)));
}
}
我在使用旧数据库和 linq to sql 时遇到了这个反复出现的问题,它使用固定长度的 char 数据类型。
当我 return 字符串时,它总是在末尾有填充,如果我想在 select 语句中连接两个字符串,我总是需要在这样做之前检查是否不为空,例如:
return (from person in personRepository.Get(p => p.FIRSTNAME.StartsWith(firstName)
|| p.SURNAME.StartsWith(surname) || p.DOB == dob)
select new PersonSearchModel
{
FullUserName = (person.SURNAME ?? "").Trim() + ", "
+ (person.FIRSTNAME ?? "").Trim() + " "
+ (person.MIDDLENAME ?? "").Trim()
}).ToList();
有没有更好的方法?我可以在数据库上下文中设置自动 trim 字符串的内容吗?
我最终更改了 t4 模板,以便 类 生成自动修剪的字符串(如果它们不为 null,否则它们返回 null)。
public string Property(EdmProperty edmProperty)
{
string type = _typeMapper.GetTypeName(edmProperty.TypeUsage);
string propertyName = _code.Escape(edmProperty);
if(type == "string"){
return string.Format(
CultureInfo.InvariantCulture,
"private {1} _{6}; {5} \t{0} {1} {2} {{ {5}\t\t{3}get{{return _{6} == null ? null : _{6}.Trim();}} {5}\t\t{4}set{{ _{6} = value;}} }}",
Accessibility.ForProperty(edmProperty),
type,
propertyName,
_code.SpaceAfter(Accessibility.ForGetter(edmProperty)),
_code.SpaceAfter(Accessibility.ForSetter(edmProperty)),
Environment.NewLine,
propertyName.ToLower()
);
}else{
return string.Format(
CultureInfo.InvariantCulture,
"{0} {1} {2} {{ {3}get; {4}set; }}",
Accessibility.ForProperty(edmProperty),
_typeMapper.GetTypeName(edmProperty.TypeUsage),
_code.Escape(edmProperty),
_code.SpaceAfter(Accessibility.ForGetter(edmProperty)),
_code.SpaceAfter(Accessibility.ForSetter(edmProperty)));
}
}