我想使用Linq查询来计算字符串的长度,并仅返回长度超过7个字符的字符串。以下代码适用于" 字符串":
public IEnumerable<string> LengthOfNames()
{
this._context.ContextOptions.LazyLoadingEnabled = false;
var Query = from c in this._context.CustomerInfoes
where c.CustomerName.Length > 7
orderby c.CustomerName.Length
select c.CustomerName;
return Query.ToList();
}
但是,当我对&#34; 整数&#34;使用类似的查询时,我收到错误&#34; &#39; INT&#39;不包含&#39;长度&#39;的定义没有扩展方法&#39;长度&#39;接受第一个论点等等。&#34; 这是代码:
public IEnumerable<int> LengthOfNumbers()
{
this._context.ContextOptions.LazyLoadingEnabled = false;
var Query = from c in this._context.CustomerInfoes
where c.ContactNo.Length > 7
orderby c.ContactNo.Length
select c.ContactNo;
return Query.ToList();
}
作为替代方案,我试过这个:
public IEnumerable<int> GreaterThanSeven()
{
this._context.ContextOptions.LazyLoadingEnabled = false;
var Query = from c in this._context.CustomerInfoes
where c.ContactNo > 9999999
orderby c.ContactNo
select c.ContactNo;
return Query.ToList();
}
哪种方法效果很好。 我的问题是:这是计算数字字符串长度的正确(或唯一)方法吗?
答案 0 :(得分:1)
您的查询(即where c.ContactNo > 9999999
)是正确有效的,但您也可以运行此查询
public IEnumerable<int> GreaterThanSeven()
{
this._context.ContextOptions.LazyLoadingEnabled = false;
var Query = from c in this._context.CustomerInfoes
where SqlFunctions.StringConvert((double)c.ContactNo).Length > 7
orderby c.ContactNo
select c.ContactNo;
return Query.ToList();
}