匿名类型的空值

时间:2016-09-08 15:48:49

标签: c# asp.net

我在C#中有一个例程,我在其中拉出一个对象列表:

var data = sdfController.GetFundingSummary(CurrentUser.UserId, _companyId, "category");

有了这些数据,我需要从中获取一个名单,我正在这样做:

var fundingNames = 
                (from names in data.AsEnumerable() 
                 where names.FundingYear.Equals(_year.ToString())
                 select new  { FundingName = names.FundingName }).Distinct().ToList();

然后我将该列表绑定到listview:

lvSDF.DataSource = fundingNames;
lvSDF.DataBind();

如果有数据,这一切都很有效,如果没有数据则会爆炸。我在.aspx端有空数据模板,如果没有任何记录,则显示一条消息,但我无法弄清楚如何将fundingNames初始化为null。

1 个答案:

答案 0 :(得分:1)

问题是data可以是null

在创建LINQ查询之前,您需要检查是否是这种情况:

var fundingNames = data = null ? ...your query... : new List<string>();

我在这里猜测FundingNamestring。如果没有相应更改。如果是这种情况,为什么要创建一个new { ... }的匿名类型?直接返回字符串:

from ...
select names.FundingNames;

正如PaulF正确指出您需要这样做,否则您可能会在List<string>List<AnonymousTypeContainingOnlyOneString>之间收到转化错误。