gpt4 book ai didi

c# - 如何设置默认值(TSource)

转载 作者:行者123 更新时间:2023-11-30 19:20:25 30 4
gpt4 key购买 nike

在 Linq 中,当我调用 SingleOrDefault 或 FirstOrDefault 时,如何为特定对象返回 null 以外的内容,例如。

        List<CrazyControls> cc = CrazyControlRepository.All();
cc.SingleOrDefault(p => p.Id == id).Render();

如何让我的 CrazyControls 返回一个实现基本 Render() 方法的默认实例?

最佳答案

DefaultIfEmpty(defaultValue) .这将确保如果集合为空,它将使用该类型的默认实例进行填充。

所以你可以这样做:

var defaultValue = new CrazyControl(...);

List<CrazyControls> cc = CrazyControlRepository.All();
cc.Where(p => p.Id == id).DefaultIfEmpty(defaultValue).First().Render();

查询表达式需要稍微改变一下。新的是这样工作的:

  1. 根据现有条件过滤集合。这将在过滤后的序列中留下一个或不留下任何项目。
  2. 使用 DefaultIfEmpty 确保序列只包含一项(如果已经有一项,DefaultIfEmpty 将不执行任何操作)。
  3. 使用First 获取单个项目。我没有使用 Single 而不是 first 的原因是如果谓词不同(或者它在未来发生变化)并且它接受多个项目,Single 会抛出。

关于c# - 如何设置默认值(TSource),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6419477/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com