我正在初始化一个新的Dictionary,并像这样逐个放置每个键:
doctrine_migrations:
dir_name: "%kernel.project_dir%/app/Migrations"
这很好,但是其余键必须是我在<?php
$args = array( 'numberposts' => 3 );
$lastposts = get_posts( $args );
foreach($lastposts as $post) : setup_postdata($post); ?>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</h2>
<?php endforeach; ?>
中创建的标头
是否可以在上面的初始化过程中添加此标头列表?像这样:
igData = data.Select(x => new Dictionary<string, string> {
["Date"] = x.GetValueOrDefault("DATE"),
["SP"] = x.GetValueOrDefault("SP"),
["IG"] = x.GetValueOrDefault("IG")}).ToList();
我知道值是相同的,但这是预期的。以上是否可能,或者这是我将要单独处理的。最好在上面这样做,因为我可以访问List<string> headers
集合中的值。
答案 0 :(得分:3)
您不能在这样的初始化程序中完成此操作,但我建议您可以使用一些Concat
和ToDictionary
进行此操作:
igData = data.Select(x => {
return new KeyValuePair<string,string>[]{
new KeyValuePair<string,string>("Date", x.GetValueOrDefault("DATE")),
new KeyValuePair<string,string>("SP", x.GetValueOrDefault("SP")),
new KeyValuePair<string,string>("IG", x.GetValueOrDefault("IG"))
}.Concat(
headers.GetHalfHourlyTimeHeaders().Select(y => new KeyValuePair<string, string>
(y, x.GetValueOrDefault["IG"])).ToList()
).ToDictionary(k => k.Key, v => v.Value);
});
答案 1 :(得分:3)
^(?=[\x00-\x7F]+$)(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$
查询语法对我来说看起来更好
igData = data.Select(x =>
new Dictionary<string, string>(headers.GetHalfHourlyTimeHeaders().ToDictionary(y => y, y => x.GetValueOrDefault("IG")))
{
["Date"] = x.GetValueOrDefault("DATE"),
["SP"] = x.GetValueOrDefault("SP"),
["IG"] = x.GetValueOrDefault("IG")
});
答案 2 :(得分:0)
与Jamiec的答案类似,但在我看来更具可读性(但未经性能测试):
List<Dictionary<string, string>> igData = data.Select(x =>
{
var dict = new Dictionary<string, string>
{
["Date"] = x.GetValueOrDefault("DATE"),
["SP"] = x.GetValueOrDefault("SP"),
["IG"] = x.GetValueOrDefault("IG")
};
// I hope I understand correctly that GetHalfHourlyTimeHeaders returns List<string>
foreach (string header in headers.GetHalfHourlyTimeHeaders())
{
dict.Add(header, x.GetValueOrDefault("IG"));
}
return dict;
}
).ToList();
答案 3 :(得分:0)
我喜欢这种方式:
igData =
data
.Select(x =>
Enumerable
.Concat(
headers
.GetHalfHourlyTimeHeaders()
.Select(k => new { k, v = x.GetValueOrDefault("IG") }),
new [] { "Date", "SP", "IG" }
.Select(k => new { k, v = x.GetValueOrDefault(k.ToUpper()) }))
.ToDictionary(z => z.k, z => z.v))
.ToList();