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;
}