多列lambda表达式

问题描述 投票:1回答:3

完成本教程后: qazxsw poi

我目前使用以下内容

https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application

但是,我想连接knownas / surname列,然后对连接项进行包含。

谁能解释/建议一个示例语法?

这是我在下面尝试的但我确定我的语法不正确。

userAccesses = userAccesses.Where(s => s.employeeDetail.employeeNumber.ToUpper().Contains(searchValue.ToUpper()));

感谢大家的回复,最终的工作版本如下。

userAccesses = userAccesses.Where(s => s.employeeDetail.employeeNumber + " " + s.employeeDetail.knownas + " " + s.employeeDetail.surname).Contains(searchValue);
c# linq lambda where-clause
3个回答
1
投票

你应该走向这个方向

userAccesses.Where(x => (x.employeeDetail.employeeNumber + x.employeeDetail.knownas + x.employeeDetail.surname).Contains(searchValue));

1
投票

您只需要连接字符串并在该字符串上调用Contains。

public class Employee
{
    public string knownas { get; set; }

    public string userName { get; set; }
}
public void Test()
{
    List<Employee> employess = new List<Employee>();
    string searchvalue = "test";

    var listEmplyer = employess.Where(x => (x.userName + x.knownas).Contains(searchvalue));
}

如果表达式需要可枚举的字符串,您还可以选择使用以下内容:

userAccesses
  .Where(s => $"{s.employeeDetail.employeeNumber} {s.employeeDetail.knownas} {s.employeeDetail.surname}".Contains(searchValue))

0
投票

搜索连接的列值很奇怪......

我建议像这样的smth:

userAccesses
  .Select(s => $"{s.employeeDetail.employeeNumber} {s.employeeDetail.knownas} {s.employeeDetail.surname}")
  .Where(s => s.Contains(searchValue))
© www.soinside.com 2019 - 2024. All rights reserved.