【问题标题】:How do I get the max data size of every column in an IQueryable using LINQ如何使用 LINQ 获取 IQueryable 中每一列的最大数据大小
【发布时间】:2010-09-15 09:40:12
【问题描述】:

我有一个采用 IQueryable 的方法。是否有 LINQ 查询可以返回 IQueryable 中每一列的大小?

更清楚一点:这是 Linq-to-objects。我想获取每个“列”的 ToString() 的长度。

【问题讨论】:

    标签: linq linq-to-objects


    【解决方案1】:

    这取决于。如果您的意思是是否有一种完全通用的方法来做出此决定,答案是否定的。所有 IQueryable 将允许访问的是每个表达式的类型。无法将 Type 任意映射到列大小。

    另一方面,如果您能够将类型映射到成员并将成员类型映射到列大小,那么是的,有一种方法可以获取大小。

    
    public IEnumerable GetColumnSize(IQueryable source)
    {
      var types = MapTypeToMembers(source).Select(x => x.Type);
      return types.Select(x => MapTypeToSize(x));
    }
    

    【讨论】:

      【解决方案2】:

      我猜你说的是 LINQ-to-SQL。它完全忽略了列大小。 varchar(15)、char(20) 和 nvarchar(max) 只是它的字符串。溢出错误只会出现在 SQL Server 端。

      【讨论】:

        【解决方案3】:

        您所说的每个“列”都会映射到每个属性。在 Linq to Objects 中,这应该可以工作,尽管过于手动:

        var lengths = from o in myObjectCollection
                      select new 
                      {
                         PropertyLength1 = o.Property1.ToString().Length,
                         PropertyLength2 = o.Property2.ToString().Length,
                         ...
                      }
        

        如果您的意思是集合中每个项目(“行”)的 ToString() 长度,那么:

        var lengths = from o in myObjectCollection
                      select o.ToString().Length;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-02-28
          • 1970-01-01
          • 2021-01-17
          • 1970-01-01
          • 2018-10-24
          • 1970-01-01
          • 1970-01-01
          • 2016-09-10
          相关资源
          最近更新 更多