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
}
我有许多包含 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
}