如何将局部变量升级为扩展方法

时间:2019-07-17 18:10:57

标签: c# .net c#-7.0 c#-8.0

我们如何将谓词升级为扩展方法的一部分,并在我们的Linq子句中使用它?

我已经定义了一个谓词并能够成功使用它:

Func<BlobsPerContainerModel, bool> isOutgoingContainer = x => x.Container.StartsWith("outgoing-");
var outgoingBlobsContainer = blobsPerContainer.Where(isOutgoingContainer).ToList();

我不想在同一位置定义该谓词,而是将其升级到自己的Extensions类。

我已将代码放在一个类中

public static class Extensions
{
    public static Func<BlobsPerContainerModel, bool> isOutgoingContainer(this BlobsPerContainerModel b) => x => b.Container.StartsWith("outgoing-");
}

但是,当尝试以这种方式使用它时:

var outgoingBlobsContainer = blobsPerContainer.Where(isOutgoingContainer).ToList();

我得到这个:

enter image description here

我们如何将谓词升级为扩展方法的一部分,并在我们的Linq子句中使用它?

这是我使用的模型:

public class BlobsPerContainerModel
{
    public string Container { get; set; }
    public int Quantity { get; set; }
}

1 个答案:

答案 0 :(得分:2)

尝试一下:

var outgoingBlobsContainer = blobsPerContainer.Where((model) 
    => model.IsOutgoingContainer()).ToList();