C# 列表中的订购者<;T>;外键为null时使用Lambda表达式
以下是我的疑问:C# 列表中的订购者<;T>;外键为null时使用Lambda表达式,c#,linq,lambda,C#,Linq,Lambda,以下是我的疑问: List<db_table> listData = db.db_table.Take(50).ToList(); 我的列也包含“null”,此时它会抛出一个错误 考虑到db_表具有从db_表1分配的外键,您可以扩展lambda表达式或使用: 在OrderBy之前添加Where子句: listData = db.db_table .Where(x => x.db_table1 != null) .OrderB
List<db_table> listData = db.db_table.Take(50).ToList();
我的列也包含“null”,此时它会抛出一个错误
考虑到db_表具有从db_表1分配的外键,您可以扩展lambda表达式或使用:
在
OrderBy
之前添加Where
子句:
listData = db.db_table
.Where(x => x.db_table1 != null)
.OrderBy(x => x.db_table1.column_name)
.ToList();
试试下面的方法
listData = db.db_table.OrderBy(x => x.db_table1?.column_name ?? "").ToList();
是否要筛选出空值?如果没有,您希望它们在已排序的列表中位于何处?我也想将其过滤掉。对我来说,进入列表是必要的。所以把
.Where(x=>x.db_table1!=null)
放在OrderBy
@DStanley之前让我试试。你可能可以在第一个查询中这样做:.OrderBy(x=>x.db_table1?.column_name??)
@vadim我已经尝试了你答案中的第二个选项,为我工作。谢谢你,伙计@vadim在应用您在此处发布的选项后,列表中的项目数减少。@Ranger我不确定您要问什么。如果您使用的第二个选项没有Where
方法,则无法减少项目数。@VadimMartynov抱歉。。这是一个bug,不是代码问题……代码对我来说运行良好:)
listData = db.db_table
.Where(x => x.db_table1 != null)
.OrderBy(x => x.db_table1.column_name)
.ToList();
listData = db.db_table.OrderBy(x => x.db_table1?.column_name ?? "").ToList();