计算数字字符串长度的正确方法

时间:2014-04-26 07:58:49

标签: c# linq

我想使用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();
    }

哪种方法效果很好。 我的问题是:这是计算数字字符串长度的正确(或唯一)方法吗?

1 个答案:

答案 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();
    }