C# linq中的序条件
我有两个表,我正在使用linq查询连接它们 带有列ID和列名称的TableA 带有列ID、TableAID和Order的TableB TableB的列TableAID是TableA和TableB之间的链接。请注意,TableB my包含TableA中不存在的行 我的数据如下C# linq中的序条件,c#,linq,C#,Linq,我有两个表,我正在使用linq查询连接它们 带有列ID和列名称的TableA 带有列ID、TableAID和Order的TableB TableB的列TableAID是TableA和TableB之间的链接。请注意,TableB my包含TableA中不存在的行 我的数据如下 TableA ID Name 1 One 2 Two 3 Three TableB ID TableAID Order 1 1 2 2 2 1 3
TableA
ID Name
1 One
2 Two
3 Three
TableB
ID TableAID Order
1 1 2
2 2 1
3 4 1
4 5 1
在我的linq查询中,我想从TableB中选择所有在TableA中具有匹配ID的行,但是列表应该按照TableB的顺序包含TableA中的名称。所以我的数据应该是
Two
One
请帮助构建linq声明
我已经试过了,但不知道该把订单放在哪里
var MyList = TableA.Where(x => TableB.Any(y => y.TableAID == x.ID))
.ToList();
您的查询可能如下例所示
var data = (from a in context.TableA
from b in context.TableB
where a.ID == b.TableAID
select new
{
a.Name,
b.Order
}).Distinct().OrderByDescending(x => x.Order).ToList();
foreach(var item in data)
{
Console.WriteLine(item.Name);
}
或者,您可以重写@M.Nasser Javaid answer:
context.TableA.Join(context.TableB, a => a.ID, b => b.TableAID,
(a, b) => new {a.Name, b.Order}).Distinct()
.OrderByDescending(x => x.Order)
.Select(x => x.Name).ToList()
请试试这个:
var listresult = (from b1 in TableA
join a1 in TableB on b1.ID equals a1.TableAID
select new
{
b1.Name,
a1.Order
}).ToList().OrderByDescending(x=>x.Order);
var final = (from m in listresult
select m.Name).ToList();
你试过什么吗?你能发布你的linq代码吗?你使用O-RM吗?你有从表到类的映射吗?如果是,您使用什么框架?听起来您想要一个内部联接,您尝试了什么?问题是我在TableA中失去了顺序,因为我想要使用名称。我使用的是实体框架,但我的代码很复杂,所以给出了一个简单的例子。我在问题中添加了我的简单linq