C# 如何使用基于SQL查询的连接在C中编写LINQ?
我需要基于以下查询编写一个linq 在SQL Server中C# 如何使用基于SQL查询的连接在C中编写LINQ?,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,我需要基于以下查询编写一个linq 在SQL Server中 select EXID,ID,NAME from Table1 A join Table2 B on A.BXID = B.BID left outer join Table3 C ON C.AXID = A.ID AND C.EXID = (some number/NULL) 这给了我300张唱片 在林克 try { using (var context = new cltransform
select EXID,ID,NAME
from Table1 A
join Table2 B on A.BXID = B.BID
left outer join Table3 C ON C.AXID = A.ID
AND C.EXID = (some number/NULL)
这给了我300张唱片
在林克
try
{
using (var context = new cltransformationContext())
{
var Details = (
from A in context.Table1
join B in context.Table2 on A.BXID equals B.BID
join C in context.Table3 on A.ID equals C.AXID
select new Table1()
{
ID = A.ID,
name = A.NAME + '-' B.Name
}).ToList();
return Details;
}
}
我这里有5000张唱片
我错过了左外连接,C.EXID=一些数字/空条件。
如何在查询中做到这一点
我应该只获取300条记录。此查询将创建左连接: 变量查询= 来自上下文中的A。表1 在A.BXID等于B.BID上的context.Table2中加入B 从context.Table3.where中的C=>A.ID==C.AXID&&C.EXID==..DefaultIfEmpty 选择新表1 { ID=A.ID, name=A.name+'-'B.name }; 这应该可以
var query =
from A in context.Table1
join B in context.Table2 on A.BXID equals B.BID
join table3 in context.Table3.Where(X => x.EXID = 123) on A.ID == table3.AXID into table3Joined
from C in table3Joined.DefaultIfEmpty() // this is how we do the left join
select new Table1
{
ID = A.ID,
name = A.NAME + '-' B.Name
};
复杂性在于,我们必须将联接放入table3Joined,然后才能从table3Joined中的C执行操作。DefaultIfEmpty您缺少and。在C中无法执行此操作。我们如何添加该条件?在context.Table3.Wherex=>x.EXID==123中连接C获得一些错误-无效的表达式术语“select”,预期的上下文关键字“on”,预期的上下文关键字“equals”,我已将连接替换为from。也许你错过了。