私はSQLクエリを書くLinqで左結合を使う方法はありますか?私はsqlで使用するlinqで左結合を使用できますか?
select
p.Name, p.Family,
E.EmployTypecode, E.employtypeName, E.EmplytyppeTye
from
personnel as p
left join
Employee as E on E.EmployTypecode = p.EmployTypecode
私はSQLクエリを書くLinqで左結合を使う方法はありますか?私はsqlで使用するlinqで左結合を使用できますか?
select
p.Name, p.Family,
E.EmployTypecode, E.employtypeName, E.EmplytyppeTye
from
personnel as p
left join
Employee as E on E.EmployTypecode = p.EmployTypecode
使用書き込み
EF 6.1では代わりに参加し、左のキーワードに参加して、右の表には、NULL値を返すようキーワードと「DefaultIfEmpty()」メソッド「INTO」を使用することは必須です。
var query = from p in personnel
join e in Employee on p.EmployTypecode equals e.EmployTypecode into t
from nt in t.DefaultIfEmpty()
orderby p.Name
select new
{
p.Name, p.Family,
EmployTypecode=(int?)nt.EmployTypecode, // To handle null value if Employtypecode is specified as not null in Employee table.
nt.employtypeName, nt.EmplytyppeTye
}.ToList();
全くこれはwrong.how左に参加する? –
OPはあなたのケースでは左結合を求めていますが、実際には内結合であるため、左結合の目的である人員から余分なものを選択することはありません。https://msdn.microsoft.com/ en-IN/library/bb397895.aspx –
このようにそれを実行します。LISTにEFを変換するために、SQLクエリを使用していけないのはなぜ
var query =
from p in personnel
join e in Employee
on p.EmployTypecode equals e.EmployTypecode
into temp
from j in temp.DefaultIfEmpty()
select new
{
name = p.name,
family = p.family,
EmployTypecode = String.IsNullOrEmpty(j.EmployTypecode) ? "" : j.EmployTypecode,
......
}
var q=(
from pd in dataContext.personnel
join od in dataContext.Employee
on pd.EmployTypecode equals od.EmployTypecode
into t
from rt in t.DefaultIfEmpty()
orderby pd.EmployTypecode
select new
{
EmployTypecode=(int?)rt.EmployTypecode,
pd.Name,
pd.Family,
rt.EmplytyppeTye
}
).ToList();
。
public class personnel
{
public String Name { get; set; }
public String Family { get; set; }
public String EmployTypecode { get; set; }
public String employtypeName { get; set; }
public String EmplytyppeTye { get; set; }
}
List<personnel> personnels = dbentities.Database.SqlQuery<personnel>(@"select
p.Name, p.Family,
E.EmployTypecode, E.employtypeName, E.EmplytyppeTye
from
personnel as p
left join
Employee as E on E.EmployTypecode = p.EmployTypecode ").ToList();
の可能複製[LEFTは、エンティティにLINQに参加?](http://stackoverflow.com/questions/19356439/left-join-in-linq-to-entities) – TheUknown