gpt4 book ai didi

c# - 组合空/空数组

转载 作者:太空宇宙 更新时间:2023-11-03 18:29:35 26 4
gpt4 key购买 nike

我有一个页面可以传递从 1 个数组到 3 个数组的任何地方。

我当前的代码有效,但前提是每个数组都填充了项目。

    [HttpPost, ValidateInput(false)]
public ActionResult AddCampaign(string campaignName, string editor1, Int32[]
productImages, Int32[] lifestyleImages, Int32[] logoImages)
{

// Add image list to CampaignImages table
// Combine image array list into a single array
var imageList = productImages.Concat(lifestyleImages).Concat(logoImages).ToArray();

return RedirectToAction("AddCampaign", "Admin");
}

每个数组都完全相同,它只包含图像的 ID。只要所有 3 个数组中都有内容,这就会起作用。但是,如果一个为空,则会出错。

我需要的是一个由所有 3 个数组组合而成的数组,productImageslifestyleImageslogoImages

不确定我错过了什么。

最佳答案

好吧,您忽略了一个事实,即如果您向它传递一个空引用,Concat 将抛出一个异常……但它很容易修复。要么写一个这样的扩展方法:

public static IEnumerable<T> NullToEmpty<T>(this IEnumerable<T> src)
{
return src ?? Enumerable.Empty<T>();
}

并将其命名为:

var imageList = productImages.NullToEmpty()
.Concat(lifestyleImages.NullToEmpty())
.Concat(logoImages.NullToEmpty())
.ToArray();

...或者直接使用空合并运算符:

var empty = Enumerable.Empty<int>();

var imageList = (productImages ?? empty).Concat(lifeStyleImages ?? empty)
.Concat(logoImages ?? empty)
.ToArray();

关于c# - 组合空/空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25535753/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com