.net 使用模式匹配测试一个属性是否为空,另一个属性是否为以给定元素开头的列表

sxpgvts3  于 2022-12-05  发布在  .NET
关注(0)|答案(1)|浏览(136)

我的任务是使用模式匹配进行Employee选择,其中Email不会是null,员工的前两种语言将是"ru""en"
如何检查非空值并检查Languages的前两个元素?
这是我的资料

public static string IsRuEnWithEmail(Employee emp) => emp switch
{
    { Email:  != null, Languages: { "ru", "en" } } =>
        $"{emp.FCs}, {emp.Email}, {emp.Role}",
    _ => "",
};

根本不管用
错误说不可能这样比较

dgsult0t

dgsult0t1#

模式匹配在C#中相对较新,对于以本月发布的C# 11开始的列表模式来说更是如此。
使用{ }创建非null matching
使用[item1, item2, ..]创建部分列表匹配
所有人一起:

// We expect a method prefixed with "Is" to return a boolean
// but OP provided this signature
public static string IsRuEnWithEmail(Employee emp) => emp switch
{
    { Email: {}, Languages: ["ru", "en", ..] } => $"{emp.FCs}, {emp.Email}, {emp.Role}",
    _ => "",
};

工作演示here

相关问题