Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 列表中的订购者<;T>;外键为null时使用Lambda表达式_C#_Linq_Lambda - Fatal编程技术网

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();