我在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。
答案 0 :(得分:1)
问题是data
可以是null
。
在创建LINQ查询之前,您需要检查是否是这种情况:
var fundingNames = data = null ? ...your query... : new List<string>();
我在这里猜测FundingName
是string
。如果没有相应更改。如果是这种情况,为什么要创建一个new { ... }
的匿名类型?直接返回字符串:
from ...
select names.FundingNames;
正如PaulF正确指出您需要这样做,否则您可能会在List<string>
和List<AnonymousTypeContainingOnlyOneString>
之间收到转化错误。