C#使用linq表达式的方法

C# Method to utilise linq expression

我有许多包含 linq 查询的类似方法 - 这是一个示例。唯一的区别是参数提供的 .Where 子句。

    public Supplier FindAny(int ID)
    {
         return CompareView.Select()
            .Where(p => p.Supplier.ID == ID)
            .Select(p => p.Supplier)
            .FirstOrDefault();
    }

我想看看是否可以通过使用表达式来精简代码。到目前为止,我已经找到了一些正在使用的表达式示例,但没有帮助我成功转换代码。

首先,最好知道这种代码风格是否可以使用表达式,如果可以,任何指点将不胜感激。

直接翻译为:

public Supplier FindAny(Func<WhateverTypePIs, bool> func)
{
     return CompareView.Select()
        .Where(func)
        .Select(p => p.Supplier)
        .FirstOrDefault();
}

..这将允许:

var supplier = FindAny(p => p.Supplier.ID == ID);

注意:您必须填写 WhateverTypePIs 通用类型 .. 因为它没有显示在您的原始问题中(它是您当前表达式中 p 的任何类型).

这有帮助吗:

public Supplier FindAny(Func<WhateverTypePIs, bool> func)
{
  return CompareView.FirstOrDefault(func).Supplier
}