我有一个从数据库中获取的匿名类型列表:
var takenChannels = (from b in bq.GetStuff(db)
where b.RecordType == "H" && b.TourStartDateTime.Date == date
select new { Start = b.TourStartDateTime, End = b.TourEndDateTime, Channel = b.RadioChannel, TourArea = b.TourArea }).ToList();
Run Code Online (Sandbox Code Playgroud)
然后我使用这个列表信息在foreach循环中做一些事情.我想在这个列表中添加一个新的匿名项目,当我回到循环中时.
就像是:
takenChannels.Union{new[] { new{Start = DateTime.Now, End = DateTime.Now.AddDays(1), Channel = 25, TourArea = "Area" }});
Run Code Online (Sandbox Code Playgroud)
显然这不起作用.我该怎么做?
编辑1:
takenChannels.Add(new { Start = s, End = e, Channel = channel, TourArea = booking.TourArea });
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止最接近的(感谢丹尼尔)......但我得到的错误是:
错误6参数1:无法从"AnonymousType#2"转换为"AnonymousType#1"
Mat*_*und 12
这个答案可能有点晚了,但是因为这是我在谷歌搜索同一个问题时发现的问题,我想我应该用一个有效的答案来完成它.
Union匿名类型多次没有问题.重要的是,所有属性都在所有实例中声明,并且它们具有相同的数据类型.如果没有,你会得到上面的错误.
TourStartDateTime或TourEndDateTime作为DateTime??RadioChannel一个int从数据库或者是一个int?或string?TourArea一个string数据库?只要确保数据类型匹配,你就可以了.下面是我在自己的程序中使用的一段代码:
var regions = (
new[] { new { Id = "-1", Name = "---", Pattern = (string)null } }
).Union(
from x in db.Userlists where x.ListType == 2 select new { Id = x.UserlistID.ToString(), Name = x.Name, Pattern = (string)null }
).Union(
from x in db.Lookups where x.Category == "Stock" select new { Id = x.Key, Name = x.Key, Pattern = x.Value }
).ToArray();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5553 次 |
| 最近记录: |