Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.6k views
in Technique[技术] by (71.8m points)

sql - Cross Join in Entity framework Lambda Expressions

How can I do the following join in EF? Tables have no relation with each other, no foreign keys.

Select t1.ID,  t1.firstname, t2.ID,t2.name from MY_TEST_TABLE1 t1, MY_TEST_TABLE2 t2
where t1.firstname = t2.name
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You could do this:

var query= from t1 in context.MY_TEST_TABLE1
           from t2 in context.MY_TEST_TABLE2
           where t1.firstname == t2.name
           select new { Table1Id= t1.ID, FirstName= t1.firstname, Table2Id=t2.ID,Name= t2.name};

Another way to do a cross join in Linq to Entities is using SelectMany extension method:

var query= context.MY_TEST_TABLE1.SelectMany(
    t1=>context.MY_TEST_TABLE2
        .Where(t2=>t1.firstname == t2.name)
        .Select(t2=>new { 
            Table1Id= t1.ID,
            FirstName= t1.firstname, 
            Table2Id=t2.ID,
            Name= t2.name
        })
    );

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...