C# 使用LINQ获取最小长度时出现问题?

C# 使用LINQ获取最小长度时出现问题?,c#,linq,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"); 有什么建议吗?您需要选择双倍而不是整数

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

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

有什么建议吗?

您需要选择双倍而不是整数。如果filesize小于1024,则以大小0结束

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

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

1023 / 1024 = 0

您可能会发现,将值转换为双倍将得到介于0和1之间的答案。

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


改为使用
i.Length/1024.0

i是文件名吗?将一个int除以一个int将产生一个int。尝试使用1024.0instead@lain:
i
FileInfo
的一个实例,我想。@Danny Chen:我想你是对的,我必须是FileInfo,di必须是DirectoryInfo。