使用LINQ获取最小长度的问题?

时间:2011-05-31 08:53:41

标签: c# linq

这里我正在检索目录中文本文件的最小大小。但是它给出0作为最小大小。但是该目录中没有0 kb文件。

var queryList3Only= (from i in di.GetFiles("*.txt", SearchOption.AllDirectories)
                     select i.Length / 1024).Min();
dest.WriteLine(queryList3Only.ToString()+" Kb");

有任何建议吗?

3 个答案:

答案 0 :(得分:6)

你需要选择双打而不是int。如果filesize是< 1024然后你将以0大小结束

var queryList3Only= (from i in di.GetFiles("*.txt", SearchOption.AllDirectories)
                     select (double)i.Length / 1024).Min();

答案 1 :(得分:2)

如果您的任何文件少于1024个字节,那么它们将显示为零,因为整数除法将被截断。

1023 / 1024 = 0

您可能会发现将值转换为双精度值可以得到0到1之间的答案。

答案 2 :(得分:2)

i.Length很长。当i.Length小于1024时,i.Length / 1024将返回0.

使用i.Length / 1024.0代替