首页 > 解决方案 > 有没有办法在链接到数组时参数化 Linq 的包含部分

问题描述

有没有办法在链接到数组时参数化 Linq 的包含部分。

我有以下代码。

var query = Data.Where(s => an_array.Contains(s.Name)).Distinct().ToList();

如何参数化 s.Name 以便创建使用 func 或其他东西的方法?

我习惯于使用 (Func<Model, T> param ) 并在输入看起来像 (s=>s.Name) 的 linq 中使用它,但我被卡住了,因为 Contains 部分只是在寻找 (s.Name)

我试过使用 (Func<Model, string> param ) 但这似乎不对。

谢谢!

更新1:

如果我有如下方法,其中 s.Name 会根据用户输入而变化。我怎样才能将它传递给方法。

public void GetFilteredItems()
{
 var queryresult = Data.Where(s => an_array.Contains(s.Name)).Distinct().ToList();
}

理想情况下想要这样的东西,所以它可以与任何通过的东西一起使用。

public void GetFilteredItems(Func<?,?> param)
{
 var queryresult = Data.Where(s => an_array.Contains(param)).Distinct().ToList();
}

标签: c#linq

解决方案


这是你想要的吗?

Func<Model, string> p = s => s.Name;

var query = Data.Where(s => an_array.Contains(p(s))).Distinct().ToList();

推荐阅读