C# 呃,如果我在查询的第一部分添加一个where子句,EnableVersioning==false,那么结果会有很大的差异。我将更新这个问题以反映现在发生的情况。请注意,如果您能提供一个简短但完整的示例,并删除任何无关的内容(例如字符串解析,您确定这是必需的
C# 呃,如果我在查询的第一部分添加一个where子句,EnableVersioning==false,那么结果会有很大的差异。我将更新这个问题以反映现在发生的情况。请注意,如果您能提供一个简短但完整的示例,并删除任何无关的内容(例如字符串解析,您确定这是必需的,c#,linq,C#,Linq,呃,如果我在查询的第一部分添加一个where子句,EnableVersioning==false,那么结果会有很大的差异。我将更新这个问题以反映现在发生的情况。请注意,如果您能提供一个简短但完整的示例,并删除任何无关的内容(例如字符串解析,您确定这是必需的吗?)对于项目ParentList.EnableVersioning,版本数为1时是否可能为true?如果是,那么GetListSize2做了错误的事情。如果item.ParentList.EnableVersioning==false | |
呃,如果我在查询的第一部分添加一个where子句,EnableVersioning==false,那么结果会有很大的差异。我将更新这个问题以反映现在发生的情况。请注意,如果您能提供一个简短但完整的示例,并删除任何无关的内容(例如字符串解析,您确定这是必需的吗?)对于项目ParentList.EnableVersioning,版本数为1时是否可能为true?如果是,那么GetListSize2做了错误的事情。如果
item.ParentList.EnableVersioning==false | | | item.Versions.Count,则执行GetListSize2中的else部分。嗨,这确实提供了大部分数字关闭原因的答案。我仍然有一个总数不匹配的问题。我将更新这个问题以反映现在的情况。他总是这样:)。你只能接受答案,不能接受评论。你确定吗PS C:\Users\XXXX\Documents>[Int64]$i=0[Void][Int64]::TryParse(“12”,[ref]$i)$i[Void][Int64]::TryParse(“2”,[ref]$i)$i[Void][Int64]::TryParse(“C”,[ref]$i)$i 12 2 0`ugh。。。我不能把它格式化成一篇文章。。。但我在PowerShell中所做的示例在解析alpha时返回0…在调用TryParse之后,前面的值不可能通过。使用out参数的方法将在返回前对其进行初始化。的文档还明确指出,当方法失败时,值将为0。对不起,您是对的。如果分析失败,TryParse将重新分配0。
public static long GetListSize(SPList list)
{
long longInt = 0;
long byteSize = (from item in list.Items.OfType<SPListItem>()
where item.ParentList.EnableVersioning == false
select long.TryParse(item["File_x0020_Size"].ToString(), out longInt) ? longInt : 0)
.Concat(from iItem in list.Items.OfType<SPListItem>()
where iItem.ParentList.EnableVersioning == true && iItem.Versions.Count > 1
from vItem in iItem.Versions.OfType<SPListItemVersion>()
select long.TryParse(vItem["File_x0020_Size"].ToString(), out longInt) ? longInt : 0)
.Sum();
return byteSize;
}
public static long GetListSize2(SPList list)
{
long byteSize = 0;
long fileSize = 0;
foreach (SPListItem item in list.Items)
{
if (item.ParentList.EnableVersioning == true && item.Versions.Count > 1)
{
for (int i = 0; i < item.Versions.Count; i++)
{
long.TryParse(item.Versions[i]["File_x0020_Size"].ToString(), out fileSize);
byteSize += fileSize;
}
}
else
{
long.TryParse(item["File_x0020_Size"].ToString(), out fileSize);
byteSize += fileSize;
}
}
return byteSize;
}
public static long GetListSizeForItemVersions(SPList list)
{
long longInt = 0;
long byteSize = (from iItem in list.Items.OfType<SPListItem>()
where iItem.ParentList.EnableVersioning == true && iItem.Versions.Count > 1
from vItem in iItem.Versions.OfType<SPListItemVersion>()
select long.TryParse(vItem["File_x0020_Size"].ToString(), out longInt) ? longInt : 0)
.Sum();
return byteSize;
}
public static long GetListSizeForItemVersions2(SPList list)
{
long byteSize = 0;
long fileSize = 0;
foreach (SPListItem item in list.Items)
{
if (item.ParentList.EnableVersioning == true && item.Versions.Count > 1)
{
for (int i = 0; i < item.Versions.Count; i++)
{
long.TryParse(item.Versions[i]["File_x0020_Size"].ToString(), out fileSize);
byteSize += fileSize;
}
}
}
return byteSize;
}
public static long GetListSizeForCurrentItems(SPList list)
{
long longInt = 0;
long byteSize = (from item in list.Items.OfType<SPListItem>()
where item.ParentList.EnableVersioning == false
select long.TryParse(item["File_x0020_Size"].ToString(), out longInt) ? longInt : 0)
.Sum();
return byteSize;
}
public static long GetListSizeForCurrentItems2(SPList list)
{
long byteSize = 0;
long fileSize = 0;
foreach (SPListItem item in list.Items)
{
long.TryParse(item["File_x0020_Size"].ToString(), out fileSize);
byteSize += fileSize;
}
return byteSize;
}
public static long GetListSize2(SPList list)
{
long byteSize = 0;
long fileSize = 0;
foreach (SPListItem item in list.Items)
{
if (item.ParentList.EnableVersioning == true && item.Versions.Count > 1)
{
for (int i = 0; i < item.Versions.Count; i++)
{
if (long.TryParse(item.Versions[i]["File_x0020_Size"].ToString(), out fileSize) == false)
fileSize=0;
byteSize += fileSize;
}
}
else
{
if (long.TryParse(item["File_x0020_Size"].ToString(), out fileSize) == false)
fileSize=0;
long.TryParse(item["File_x0020_Size"].ToString(), out fileSize);
byteSize += fileSize;
}
}
return byteSize;
}