Beispiel #1
0
 /// <summary>インスタンスを初期化します。</summary>
 /// <param name="order">ソート方向を表す <see cref="NaturalSortOrder"/>。</param>
 /// <param name="options">比較方法を表す <see cref="NaturalComparerOptions"/>。</param>
 /// <param name="ignoreCharacter">無視する文字を表す char[]。</param>
 public NaturalComparer(NaturalSortOrder order, NaturalComparerOptions options, char[] ignoreCharacter)
 {
     this.SortOrder   = order;
     _ignoreCharacter = ignoreCharacter;
     this.Options     = options; // 最後に実行する必要がある
 }
        public static Func <SelectableMediaItem, SelectableMediaItem, int> getSortFunction(MediaFileSortMode sortMode)
        {
            Func <SelectableMediaItem, SelectableMediaItem, int> sortFunc = null;

            switch (sortMode)
            {
            case MediaFileSortMode.Name:

                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = NaturalSortOrder.CompareNatural(Path.GetFileName(a.Item.Location),
                                                                 Path.GetFileName(b.Item.Location));

                    return(result);
                });
                break;

            case MediaFileSortMode.Size:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    return(onEquals(a.Item.Metadata.SizeBytes.CompareTo(b.Item.Metadata.SizeBytes), a, b));
                });
                break;

            case MediaFileSortMode.Rating:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    return(onEquals(Nullable.Compare(a.Item.Metadata.Rating, b.Item.Metadata.Rating), a, b));
                });
                break;

            case MediaFileSortMode.Imported:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    return(onEquals(a.Item.Metadata.IsImported.CompareTo(b.Item.Metadata.IsImported), a, b));
                });
                break;

            case MediaFileSortMode.Tags:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    return(onEquals(a.Item.Metadata.Tags.Count.CompareTo(b.Item.Metadata.Tags.Count), a, b));
                });
                break;

            case MediaFileSortMode.FileDate:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    return(onEquals(a.Item.Metadata.FileDate.CompareTo(b.Item.Metadata.FileDate), a, b));
                });
                break;

            case MediaFileSortMode.MimeType:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    return(onEquals(a.Item.Metadata.MimeType.CompareTo(b.Item.Metadata.MimeType), a, b));
                });
                break;

            case MediaFileSortMode.LastModified:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    return(onEquals(a.Item.Metadata.LastModifiedDate.CompareTo(b.Item.Metadata.LastModifiedDate), a, b));
                });
                break;

            case MediaFileSortMode.CreationDate:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    return(onEquals(Nullable.Compare(a.Item.Metadata.CreationDate, b.Item.Metadata.CreationDate), a, b));
                });
                break;

            case MediaFileSortMode.SoftWare:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    return(onEquals(Compare(a.Item.Metadata.Software, b.Item.Metadata.Software), a, b));
                });
                break;

            case MediaFileSortMode.Width:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    int widthA;
                    int widthB;

                    if (a.Item.Metadata is ImageMetadata)
                    {
                        widthA = (a.Item.Metadata as ImageMetadata).Width;
                    }
                    else
                    {
                        widthA = (a.Item.Metadata as VideoMetadata).Width;
                    }

                    if (b.Item.Metadata is ImageMetadata)
                    {
                        widthB = (b.Item.Metadata as ImageMetadata).Width;
                    }
                    else
                    {
                        widthB = (b.Item.Metadata as VideoMetadata).Width;
                    }

                    return(onEquals(widthA.CompareTo(widthB), a, b));
                });
                break;

            case MediaFileSortMode.Height:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    int heightA;
                    int heightB;

                    if (a.Item.Metadata is ImageMetadata)
                    {
                        heightA = (a.Item.Metadata as ImageMetadata).Height;
                    }
                    else
                    {
                        heightA = (a.Item.Metadata as VideoMetadata).Height;
                    }

                    if (b.Item.Metadata is ImageMetadata)
                    {
                        heightB = (b.Item.Metadata as ImageMetadata).Height;
                    }
                    else
                    {
                        heightB = (b.Item.Metadata as VideoMetadata).Height;
                    }

                    return(onEquals(heightA.CompareTo(heightB), a, b));
                });
                break;

            case MediaFileSortMode.Duration:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    int?aDuration = null;
                    int?bDuration = null;

                    if (a.Item.Metadata is AudioMetadata)
                    {
                        aDuration = (a.Item.Metadata as AudioMetadata).DurationSeconds;
                    }
                    else
                    {
                        aDuration = (a.Item.Metadata as VideoMetadata).DurationSeconds;
                    }

                    if (b.Item.Metadata is AudioMetadata)
                    {
                        bDuration = (b.Item.Metadata as AudioMetadata).DurationSeconds;
                    }
                    else
                    {
                        bDuration = (b.Item.Metadata as VideoMetadata).DurationSeconds;
                    }

                    return(onEquals(Nullable.Compare <int>(aDuration, bDuration), a, b));
                });
                break;

            case MediaFileSortMode.FramesPerSecond:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    Nullable <double> aFPS = a.Item.Metadata is VideoMetadata ? new Nullable <double>((a.Item.Metadata as VideoMetadata).FramesPerSecond) : null;
                    Nullable <double> bFPS = b.Item.Metadata is VideoMetadata ? new Nullable <double>((b.Item.Metadata as VideoMetadata).FramesPerSecond) : null;

                    return(onEquals(Nullable.Compare <double>(aFPS, bFPS), a, b));
                });
                break;

            case MediaFileSortMode.VideoRate:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    Nullable <long> aVideoRate = a.Item.Metadata is VideoMetadata ? (a.Item.Metadata as VideoMetadata).VideoBitRate : null;
                    Nullable <long> bVideoRate = b.Item.Metadata is VideoMetadata ? (b.Item.Metadata as VideoMetadata).VideoBitRate : null;

                    return(onEquals(Nullable.Compare <long>(aVideoRate, bVideoRate), a, b));
                });
                break;

            case MediaFileSortMode.AudioRate:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    Nullable <long> aAudioRate = a.Item.Metadata is VideoMetadata ? (a.Item.Metadata as VideoMetadata).AudioBitRate : null;
                    Nullable <long> bAudioRate = b.Item.Metadata is VideoMetadata ? (b.Item.Metadata as VideoMetadata).AudioBitRate : null;

                    return(onEquals(Nullable.Compare <long>(aAudioRate, bAudioRate), a, b));
                });
                break;

            case MediaFileSortMode.Rate:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    Nullable <long> aBitRate = a.Item.Metadata is AudioMetadata ? (a.Item.Metadata as AudioMetadata).BitRate : null;
                    Nullable <long> bBitRate = b.Item.Metadata is AudioMetadata ? (b.Item.Metadata as AudioMetadata).BitRate : null;

                    return(onEquals(Nullable.Compare <long>(aBitRate, bBitRate), a, b));
                });
                break;

            case MediaFileSortMode.VideoCodec:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    String aVideoCodec = a.Item.Metadata is VideoMetadata ? (a.Item.Metadata as VideoMetadata).VideoCodec : "";
                    String bVideoCodec = b.Item.Metadata is VideoMetadata ? (b.Item.Metadata as VideoMetadata).VideoCodec : "";

                    return(onEquals(aVideoCodec.CompareTo(bVideoCodec), a, b));
                });
                break;

            case MediaFileSortMode.AudioCodec:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    string aAudioCodec = null;
                    string bAudioCodec = null;

                    if (a.Item.Metadata is AudioMetadata)
                    {
                        aAudioCodec = (a.Item.Metadata as AudioMetadata).AudioCodec;
                    }
                    else
                    {
                        aAudioCodec = (a.Item.Metadata as VideoMetadata).AudioCodec;
                    }

                    if (b.Item.Metadata is AudioMetadata)
                    {
                        bAudioCodec = (b.Item.Metadata as AudioMetadata).AudioCodec;
                    }
                    else
                    {
                        bAudioCodec = (b.Item.Metadata as VideoMetadata).AudioCodec;
                    }

                    return(onEquals(Compare(aAudioCodec, bAudioCodec), a, b));
                });
                break;

            case MediaFileSortMode.PixelFormat:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    String aPixelFormat = a.Item.Metadata is VideoMetadata ? (a.Item.Metadata as VideoMetadata).PixelFormat : null;
                    String bPixelFormat = b.Item.Metadata is VideoMetadata ? (b.Item.Metadata as VideoMetadata).PixelFormat : null;

                    return(onEquals(Compare(aPixelFormat, bPixelFormat), a, b));
                });
                break;

            case MediaFileSortMode.BitsPerSample:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    int?aBitsPerSample = null;
                    int?bBitsPerSample = null;

                    if (a.Item.Metadata is AudioMetadata)
                    {
                        aBitsPerSample = (a.Item.Metadata as AudioMetadata).BitsPerSample;
                    }
                    else
                    {
                        aBitsPerSample = (a.Item.Metadata as VideoMetadata).BitsPerSample;
                    }

                    if (b.Item.Metadata is AudioMetadata)
                    {
                        bBitsPerSample = (b.Item.Metadata as AudioMetadata).BitsPerSample;
                    }
                    else
                    {
                        bBitsPerSample = (b.Item.Metadata as VideoMetadata).BitsPerSample;
                    }

                    return(onEquals(Nullable.Compare(aBitsPerSample, bBitsPerSample), a, b));
                });
                break;

            case MediaFileSortMode.SamplesPerSecond:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    int?aSamplesPerSecond = null;
                    int?bSamplesPerSecond = null;

                    if (a.Item.Metadata is AudioMetadata)
                    {
                        aSamplesPerSecond = (a.Item.Metadata as AudioMetadata).SamplesPerSecond;
                    }
                    else
                    {
                        aSamplesPerSecond = (a.Item.Metadata as VideoMetadata).SamplesPerSecond;
                    }

                    if (b.Item.Metadata is AudioMetadata)
                    {
                        bSamplesPerSecond = (b.Item.Metadata as AudioMetadata).SamplesPerSecond;
                    }
                    else
                    {
                        bSamplesPerSecond = (b.Item.Metadata as VideoMetadata).SamplesPerSecond;
                    }

                    return(onEquals(Nullable.Compare(aSamplesPerSecond, bSamplesPerSecond), a, b));
                });
                break;

            case MediaFileSortMode.NrChannels:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    int?aNrChannels = null;
                    int?bNrChannels = null;

                    if (a.Item.Metadata is AudioMetadata)
                    {
                        aNrChannels = (a.Item.Metadata as AudioMetadata).NrChannels;
                    }
                    else
                    {
                        aNrChannels = (a.Item.Metadata as VideoMetadata).NrChannels;
                    }

                    if (b.Item.Metadata is AudioMetadata)
                    {
                        bNrChannels = (b.Item.Metadata as AudioMetadata).NrChannels;
                    }
                    else
                    {
                        bNrChannels = (b.Item.Metadata as VideoMetadata).NrChannels;
                    }

                    return(onEquals(Nullable.Compare(aNrChannels, bNrChannels), a, b));
                });
                break;

            case MediaFileSortMode.CameraMake:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    String aVal = a.Item.Metadata is ImageMetadata ? (a.Item.Metadata as ImageMetadata).CameraMake : null;
                    String bVal = b.Item.Metadata is ImageMetadata ? (b.Item.Metadata as ImageMetadata).CameraMake : null;

                    return(onEquals(Compare(aVal, bVal), a, b));
                });
                break;

            case MediaFileSortMode.CameraModel:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    String aVal = a.Item.Metadata is ImageMetadata ? (a.Item.Metadata as ImageMetadata).CameraModel : null;
                    String bVal = b.Item.Metadata is ImageMetadata ? (b.Item.Metadata as ImageMetadata).CameraModel : null;

                    return(onEquals(Compare(aVal, bVal), a, b));
                });
                break;

            case MediaFileSortMode.Lens:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    String aVal = a.Item.Metadata is ImageMetadata ? (a.Item.Metadata as ImageMetadata).Lens : null;
                    String bVal = b.Item.Metadata is ImageMetadata ? (b.Item.Metadata as ImageMetadata).Lens : null;

                    return(onEquals(Compare(aVal, bVal), a, b));
                });
                break;

            case MediaFileSortMode.FocalLength:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    Nullable <double> aVal = a.Item.Metadata is ImageMetadata ? (a.Item.Metadata as ImageMetadata).FocalLength : null;
                    Nullable <double> bVal = b.Item.Metadata is ImageMetadata ? (b.Item.Metadata as ImageMetadata).FocalLength : null;

                    return(onEquals(Nullable.Compare(aVal, bVal), a, b));
                });
                break;

            case MediaFileSortMode.FNumber:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    Nullable <double> aVal = a.Item.Metadata is ImageMetadata ? (a.Item.Metadata as ImageMetadata).FNumber : null;
                    Nullable <double> bVal = b.Item.Metadata is ImageMetadata ? (b.Item.Metadata as ImageMetadata).FNumber : null;

                    return(onEquals(Nullable.Compare(aVal, bVal), a, b));
                });
                break;

            case MediaFileSortMode.ExposureTime:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    Nullable <double> aVal = a.Item.Metadata is ImageMetadata ? (a.Item.Metadata as ImageMetadata).ExposureTime : null;
                    Nullable <double> bVal = b.Item.Metadata is ImageMetadata ? (b.Item.Metadata as ImageMetadata).ExposureTime : null;

                    return(onEquals(Nullable.Compare(aVal, bVal), a, b));
                });
                break;

            case MediaFileSortMode.ISOSpeedRating:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    Nullable <int> aVal = a.Item.Metadata is ImageMetadata ? (a.Item.Metadata as ImageMetadata).ISOSpeedRating : null;
                    Nullable <int> bVal = b.Item.Metadata is ImageMetadata ? (b.Item.Metadata as ImageMetadata).ISOSpeedRating : null;

                    return(onEquals(Nullable.Compare(aVal, bVal), a, b));
                });
                break;

            case MediaFileSortMode.Genre:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    String aVal = a.Item.Metadata is AudioMetadata ? (a.Item.Metadata as AudioMetadata).Genre : null;
                    String bVal = b.Item.Metadata is AudioMetadata ? (b.Item.Metadata as AudioMetadata).Genre : null;

                    return(onEquals(Compare(aVal, bVal), a, b));
                });
                break;

            case MediaFileSortMode.Album:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    String aVal = a.Item.Metadata is AudioMetadata ? (a.Item.Metadata as AudioMetadata).Album : null;
                    String bVal = b.Item.Metadata is AudioMetadata ? (b.Item.Metadata as AudioMetadata).Album : null;

                    return(onEquals(Compare(aVal, bVal), a, b));
                });
                break;

            case MediaFileSortMode.Track:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    Nullable <int> aVal = a.Item.Metadata is AudioMetadata ? (a.Item.Metadata as AudioMetadata).TrackNr : null;
                    Nullable <int> bVal = b.Item.Metadata is AudioMetadata ? (b.Item.Metadata as AudioMetadata).TrackNr : null;

                    return(onEquals(Nullable.Compare(aVal, bVal), a, b));
                });
                break;

            case MediaFileSortMode.TotalTracks:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    Nullable <int> aVal = a.Item.Metadata is AudioMetadata ? (a.Item.Metadata as AudioMetadata).TotalTracks : null;
                    Nullable <int> bVal = b.Item.Metadata is AudioMetadata ? (b.Item.Metadata as AudioMetadata).TotalTracks : null;

                    return(onEquals(Nullable.Compare(aVal, bVal), a, b));
                });
                break;

            case MediaFileSortMode.Disc:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    Nullable <int> aVal = a.Item.Metadata is AudioMetadata ? (a.Item.Metadata as AudioMetadata).DiscNr : null;
                    Nullable <int> bVal = b.Item.Metadata is AudioMetadata ? (b.Item.Metadata as AudioMetadata).DiscNr : null;

                    return(onEquals(Nullable.Compare(aVal, bVal), a, b));
                });
                break;

            case MediaFileSortMode.TotalDiscs:
                sortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>(
                    (a, b) =>
                {
                    int result = hasMediaTest(a, b);
                    if (result != 0)
                    {
                        return(result);
                    }

                    Nullable <int> aVal = a.Item.Metadata is AudioMetadata ? (a.Item.Metadata as AudioMetadata).TotalDiscs : null;
                    Nullable <int> bVal = b.Item.Metadata is AudioMetadata ? (b.Item.Metadata as AudioMetadata).TotalDiscs : null;

                    return(onEquals(Nullable.Compare(aVal, bVal), a, b));
                });
                break;

            default:
                break;
            }

            Func <SelectableMediaItem, SelectableMediaItem, int> lockedSortFunc = new Func <SelectableMediaItem, SelectableMediaItem, int>((a, b) =>
            {
                a.Item.EnterReadLock();
                b.Item.EnterReadLock();
                try
                {
                    return(sortFunc(a, b));
                }
                finally
                {
                    b.Item.ExitReadLock();
                    a.Item.ExitReadLock();
                }
            });


            return(lockedSortFunc);
        }
Beispiel #3
0
 /// <summary>インスタンスを初期化します。</summary>
 /// <param name="order">ソート方向を表す <see cref="NaturalSortOrder"/>。</param>
 /// <param name="options">比較方法を表す <see cref="NaturalComparerOptions"/>。</param>
 public NaturalComparer(NaturalSortOrder order, NaturalComparerOptions options)
     : this(order, NaturalComparerOptions.Default, new char[0])
 {
 }
Beispiel #4
0
 private static int fileInfoComparer(FileInfo x, FileInfo y)
 {
     return(NaturalSortOrder.CompareNatural(x.Name, y.Name));
 }