如何使用LINQ / Projection对包含引用表/对象B(B包含id和名称)的id字段的A对象列表进行排序。
我想按B.name?
对包含B的A对象列表进行排序模型(伪)
public class A
{
public int AId {get; set;}
public Nullable<int> BId {get; set;}
}
public class B
{
public int BId {get;set;}
public string Name {get;set;}
}
某些控制器中的代码传入一个包含B的A列表但是按B.Name排序?
var list = db.As.OrderBy(x => x.BId->References.Name); // Way wrong but using something similar
return(list.ToList()
基本上,寻找相当于此的东西(使用上面的投影连接或OrderBy):
var q1 =
from a in db.As
join b in db.Bs on a.BId equals b.BId
orderby b.Name // <- Need this to sort by B's name
select c;
答案 0 :(得分:1)
我是否正确您正在寻找上面已经写过的LINQ查询的等价物,只是它基于扩展方法而不是?
在这种情况下,以下内容应该有效:
var list = db.As.Where(a => a.BId.HasValue)
.Join(db.Bs, a => a.BId.Value, b => b.BId, (a, b) => new { a, b.Name })
.OrderBy(r => r.Name)
.Select(r => r.a);
我还添加了一个检查,以确保A.BId在获取其值之前不为空。
只是好奇:为什么你不能使用你的LINQ查询(唯一的区别是选择a而不是c)?