c# - 新的空白,非 null 匿名类型

标签 c# linq

我需要将一个新的空白但非空的匿名类型插入到 linq 查询返回的其他匿名类型的列表中。那可能吗?我能得到的都是空值

var something =
( from a in x.As
 where x != null
  join b in x.Bs
    on a.key equals b.key
select new
{
    a.prop1,
    a.prop2,
    b.prop1,
    b.prop2,
    b.prop3
}).ToList();

// insert blank
//something.InsertRange(0, something.DefaultIfEmpty());
//something.InsertRange(0, something.Take(0));
//?

最佳答案

我不知道有什么方法可以在单个查询中执行此操作,因为匿名类型的默认值是 null。我会做的是预先创建一个“默认”项并在必要时附加它:

var blank = new {
                prop1 = default(string),  // can't use null 
                prop2 = default(string),  // because the type cannot be inferred
                prop3 = default(string),
                prop4 = default(string)
                };

var something = /*...*/.ToList();
if(!something.Any())
    something.Add(blank);

请注意,只要字段名称匹配(名称和类型),blank 将与 Linq 查询创建的匿名类型相同。

关于c# - 新的空白,非 null 匿名类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13923647/

相关文章:

c# - 将数组中的值与数组中之前的所有值进行比较的有效方法

vb.net - 将嵌套 for 循环转换为 LINQ

c# - 在 foreach/for 中构建 where 子句的延迟查询

c# - 如果我在以下 C# 场景中已经有了正确的类型,是否有办法避免 Cast<T>() ?

c# - 使用单个 LINQ 语句将列表拆分为两个列表

C# WebAPI 交叉更新多个表的内连接数据

c# - 由 ArcGIS 引擎 SDK 提供支持的 .NET 程序报告找不到类型或命名空间 "AxMapControl "

应用程序启动时出现 C# 错误 - 无法加载文件或程序集

c# - WPF DataGrid 绑定(bind)性能问题

C# 类型对象作为 Post 方法的有效负载