【发布时间】:2017-07-28 15:40:44
【问题描述】:
以下代码部分来自较大的 linq 查询,但这是我需要帮助的部分:
KnowledgeTypeText = Regex.Replace((from categoryVersion in _Context.ArticleCategoryVersions
join category in _Context.Categories
on categoryVersion.CategoryID equals category.CategoryID
where category.ParentID.HasValue == true
&& category.ParentID.Value == rootKnowledgeTypeID
&& categoryVersion.Version == articleLatestVersions.Version
&& categoryVersion.ArticleID == articleLatestVersions.ArticleID
select category).First().Name, @"(\d+[\\.]?\s*)", ""),
简短版:查询的这一部分将获取文章的类别,但它不一定要有值。如果它确实有一个值,我需要去掉文本开头的编号。
当类别为空时,我会遇到异常,因为它显然是在尝试对属性名称执行替换操作。
如何添加处理 Null 的代码?返回一个空字符串是安全的,但我不确定如何测试它并返回一个空字符串。
【问题讨论】:
-
真的需要内联吗?为什么不直接提取选择,对其执行
FirstOrDefault,然后如果值不为空则替换? -
category是否为空?还是Name属性null?还是序列中没有项目?
标签: c# regex linq linq-to-sql