c# - LINQ 中的匿名类型

标签 c# linq linq-to-sql .net-4.0 anonymous-types

我正在尝试从查询中获取匿名对象:

var myList = from td in MyObjectList
             select new
             {
                 a = td.a,
                 b = td.b,
                 c = td.c,
                 name = (from r in contex.NewList
                         where r.aa  == td.a && r.bb == td.b
                         select r.Name).ToList()
             };

我希望名称具有 r.Name 值,因为我希望名称列表只包含一个元素。如果它包含 0 个元素,我希望名称的值为 NONE,如果超过 1 个元素,则应抛出异常或其他内容。

是否有可能实现这样的目标?感谢您的帮助。

最佳答案

代替 .ToList() 使用

.SingleOrDefault() ?? (td.a == 0 ? "XNone" : "None")

编辑:根据评论更改了答案。

此外,我建议不要将此类逻辑放入 Linq-to-SQL 中。有时这会导致大量未经优化的 SQL 代码,并且除非您不介意某些性能问题,否则会导致 SQL 执行速度大大降低。

关于c# - LINQ 中的匿名类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4860864/

相关文章:

c# - 停止接收来自 SubscriptionClient 的消息

c# linq nested "conditional/composite"分组

c# - LINQ 选择相隔 X 分钟的记录

c# - 在 C# 中旋转列表的最简单方法

linq-to-sql - SQL Azure 上 LINQ-TO-SQL 的重试逻辑 - 高效的实现?

c# - Asp.net WEB API - 如果我使用 POST 而不是 PUT 和 DELETE 会出现什么问题?

c# - 在 C# 中是否有与 Groovy 等效的东西?

c# - 为什么不调用此命令?

c# - Linq to SQL - 设计问题

database - Linq to Sql - 如何使用存储库模式更新对象?