我从两个独立的API获取json数据,然后将它们放入两个不同类型的列表中。到目前为止一切都很好,如下所示:
foreach (var item in instaObj.items)
{
var media = model.ImportedMedia.Select(o => new MediaImport
{
Id = item.id,
MediaUrl = item.images.standard_resolution.url,
CreatedTime = item.created_time
}).ToList();
model.ImportedMedia.AddRange(media);
}
foreach (var item in photos)
{
var media = model.ImportedMedia.Select(o => new MediaImport
{
Id = item.PhotoId,
MediaUrl = item.Medium640Url,
CreatedTime = item.DateUploaded.ToString(CultureInfo.InvariantCulture)
}).ToList();
model.ImportedMedia.AddRange(media);
}
但是我需要将它们放在另一个列表(另一种类型)中,以按日期排序的GUI显示。
以下是我迄今取得的成就。但是当'AddRange''var media'为空时。这里有什么不对。我希望'var media'保存值,现在它们为null。
def addEntry(filename, cp_y, cp_x, sigma, intensity, chip):
sqlite3.register_adapter(np.ndarray, adapt_array)
sqlite3.register_converter('ARRAY', convert_array)
con = sqlite3.connect('sources.db', detect_types = sqlite3.PARSE_DECLTYPES, timeout = 10)
cur = con.sursor()
cur.execute('''INSERT INTO sources (filename, cp_y, cp_x, sigma, intensity, chip) VALUES(?, ?, ?, ?, ?, ?), (filename, cp_y, cp_x, sigma, intensity, chip))
con.commit()
con.close()
答案 0 :(得分:4)
为什么要在Select
上致电model.ImportedMedia
?我想你想做的是:
model.ImportedMedia.AddRange(instaObj.items.Select(item =>
new MediaImport {
Id = item.id,
MediaUrl = item.images.standard_resolution.url,
CreatedTime = item.created_time
});
接着是
model.ImportedMedia.AddRange(photos.Select(photo => new MediaImport
{
Id = photo.PhotoId,
MediaUrl = photo.Medium640Url,
CreatedTime = photo.DateUploaded.ToString(CultureInfo.InvariantCulture)
});
答案 1 :(得分:3)
您可能希望对您正在迭代的集合进行操作,而不是像这样
var media1 = instaObj.items.Select(o => new MediaImport
{
Id = o.id,
MediaUrl = o.images.standard_resolution.url,
CreatedTime = o.created_time
});
var media2 = photos.Select(o => new MediaImport
{
Id = o.PhotoId,
MediaUrl = o.Medium640Url,
CreatedTime = o.DateUploaded.ToString(CultureInfo.InvariantCulture)
});
var mergedList = media1.Union(media2).ToList();
目前感觉有点像你在搅拌苹果和梨。
答案 2 :(得分:3)
您正在从media
本身创建model.ImportedMedia
变量,然后添加它。如果model.ImportedMedia
最初为空,则不会添加任何元素。
我认为你想要的是:
var media1 = instaObj.items.Select(item => new MediaImport
{
Id = item.id,
MediaUrl = item.images.standard_resolution.url,
CreatedTime = item.created_time
});
var media2 = photos.Select(item => new MediaImport
{
Id = item.PhotoId,
MediaUrl = item.Medium640Url,
CreatedTime = item.DateUploaded.ToString(CultureInfo.InvariantCulture)
});
model.ImportedMedia.AddRange(media1);
model.ImportedMedia.AddRange(media2);