gpt4 book ai didi

c# - 如果我的查询没有找到任何项目,它应该返回 null 吗?

转载 作者:行者123 更新时间:2023-12-02 04:46:21 25 4
gpt4 key购买 nike

我有一个多选列表,用户可以在其中选择一些或不选择inputvoltages。当用户未选择 InputVoltages 时,当我调用 .Tolist() 时,我的查询会抛出一个 null 异常。为什么我不只是返回一个空列表?

我正在使用 MVC5 C# 和 Entity Framework 6。

存储库

public IQueryable<InputVoltage> All
{
get { return context.InputVoltages; }
}

Controller

var newInputVoltages = unitOfWorkPds.InputVoltageRepository
.All.Where(m => engineeringPdsEditViewModel.SelectedInputVoltages
.Contains(m.Id))
.ToList<InputVoltage>();

All 确实返回一个列表,但是当未选择任何内容时 SelectedInputVoltages 为空。我想知道这是否是问题所在。

当我使用此查询并为我的索引页添加 where 语句时,我在调用 ToList 时没有收到空错误

IQueryable<EngineeringPdsIndexViewModel> query = 
(from a in context.EngineeringPds
select new EngineeringPdsIndexViewModel
{
Id = a.Id,
Name = a.Name,
Status = a.Status,
AnnualQuantities = a.AnnualQuantities,
ToMarketDate = a.ToMarketDate,
SubmittedBy = a.SubmittedBy,
TargetPrice = a.TargetPrice
});

所以我相信 Brian 对错误的想法是正确的,但这里是问题的扩展我有一个多选框,由

在获取操作方法中填充
    IList<InputVoltage> inputVoltagesList = unitOfWorkPds.InputVoltageRepository.All.ToList();

然后

pdsEditViewModel.InputVoltageList = inputVoltagesList.Select(m => new SelectListItem { Text = m.Name, Value = m.Id.ToString() });  in my view I hav@Html.ListBoxFor(m => m.SelectedApprovals, Model.ApprovalList)

但是当用户没有做出任何选择时,selectedInputvoltages 作为 null 进入我的后 Controller 操作,我如何让它作为一个空列表进入?

更新

对于遇到相同问题的任何人,布赖恩首先回答解释问题。可以在此处找到提交带有空列表的列表框的解决方法

How can I return an empty list instead of a null list from a ListBoxFor selection box in Asp.net MVC?

最佳答案

在 BCL 中为 IEnumerable<T> 定义的任何扩展方法或 IQueryable<T>返回 IEnumerable<T>IQueryable<T>不会返回 null。它可能会返回一个空集合,但这与 null 有很大不同。

试试这个:

var newInputVoltages = engineeringPdsEditViewModel.SelectedInputVoltages == null ?
unitOfWorkPds.InputVoltageRepository.All :
unitOfWorkPds.InputVoltageRepository.All.Where(m => engineeringPdsEditViewModel.SelectedInputVoltages.Contains(m.Id)).ToList();

关于c# - 如果我的查询没有找到任何项目,它应该返回 null 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19730790/

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