我有一个接受IQueryable的方法。是否有一个LINQ查询可以返回IQueryable中每一列的大小?
更清楚地说:这是Linq- To -objects。我想要得到每个“列”的ToString()的长度。
发布于 2008-10-05 18:34:25
那得看情况。如果你的意思是,有没有一种完全通用的方法来确定这个问题,答案是否定的。所有IQueryable将提供对每个表达式的类型的访问。无法任意地将类型映射到列大小。
另一方面,如果您能够将类型映射到成员,并将成员类型映射到列大小,那么是的,有一种方法可以获得列大小。
public IEnumerable GetColumnSize(IQueryable source)
{
var types = MapTypeToMembers(source).Select(x => x.Type);
return types.Select(x => MapTypeToSize(x));
}发布于 2008-10-05 18:56:02
我猜你说的是LINQ-to-SQL。它完全忽略列的大小。varchar(15)、char(20)和nvarchar(max)只是它的字符串。溢出错误将仅出现在SQL Server端。
发布于 2008-10-07 22:42:07
您说对于每个“列”,它将映射到每个属性。在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;https://stackoverflow.com/questions/172393
复制相似问题