开发者

Left join on Linq?

I'm actually not sure if this is exactly a left join; I'm not an expert on SQL. I have the following Linq query:

        var title = dataSet.Tables["title"].AsEnumerable();
        var author = dataSet.Tables["author"].AsEnumerable();
        var review = dataSet.Tables["review"].AsEnumerable();

        var results = from t in title
                      join a in author on t["Url"] equals a["Url"]
                      join r in review on t["Url"] equals r["Url"]
                      select new { 
                          tText = t["InnerText"], 
                          aText = a["InnerText"], 
                          rText = r["InnerText"] 
                      };

My problem is that sometimes there is no matching review on t开发者_StackOverflowhe "review" column, but I still want to get the title and the author on my result. How can I achieve this?


You need a left outer join. http://solidcoding.blogspot.com/2007/12/left-outer-join-in-linq.html

Another example with multiple left outer joins: Linq to Sql: Multiple left outer joins


OK this worked, not sure why though:

        var title = dataSet.Tables["title"].AsEnumerable();
        var author = dataSet.Tables["author"].AsEnumerable();
        var review = dataSet.Tables["review"].AsEnumerable();

        var results = from t in title
                      join a in author on t["Url"] equals a["Url"]
                      join r in review on t["Url"] equals r["Url"] into g
                      from r in g.DefaultIfEmpty() 
                      select new { 
                          tText = t["InnerText"], 
                          aText = a["InnerText"], 
                          rText = r != null? r["InnerText"]: ""
                      };
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜