本文主要是介绍DefaultIfEmpty and Left Outer Join,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
http://www.xmaspx.com/u/guitarpark/Blog.aspx/t-19
DefaultIfEmpty函数:若指定数据源为空的时候,返回一个默认值,此函数延时加载。
例:
int[] ints = { 1, 2, 3, 4, 5, 6 };var result = ints.DefaultIfEmpty();foreach (int x in result)Response.Write(x);
由于ints数组不为空,所以最后输出结果为123456。int[] ints = { 1, 2, 3, 4, 5, 6 };var result = ints.DefaultIfEmpty(-1);foreach (int x in result)Response.Write(x);
同上,由于ints数组不为空,所以最后输出结果为123456。int[] ints = { };var result = ints.DefaultIfEmpty(-1);foreach (int x in result)Response.Write(x);
由于ints数组为空,所以最后输出结果为ints1.DefaultIfEmpty(-1)中指定的-1。
http://www.cnblogs.com/cs_net/articles/2059846.html
左外连接与SqL中left join一样。如下例找出根据publisher中找出SampleData.Publishers中所有资料和book中存在于publisher的资料。
左外连接查询语句如下:
var leftJoinQuerybyDefault = from publisher in SampleData.Publishers
join book in SampleData.Books
on publisher equals book.Publisher into publisherBooks
from book in publisherBooks.DefaultIfEmpty()
select new
{
PublisherName = publisher.Name,
BookName = (book == default (Book)) ? " no book " : book.Title
};
注:上例中使用了DefaultIfEmpty操作符,它能够为实序列提供一个默认的元素。DefaultIfEmpty使用了泛型中的default关键字。default关键字对于引用类型将返回null,而对于值类型则返回0。对于结构体类型,则会根据其成员类型将它们相应地初始化为null(引用类型)或0(值类型)。
我们可以不使用default关键字,但在要DefaultIfEmpty中给定当空时的默认对象值。语句如下:
var leftJoinQuery = from publisher in SampleData.Publishers
join book in SampleData.Books
on publisher equals book.Publisher into publisherBooks
from book in publisherBooks.DefaultIfEmpty(
new Book { Title = "" } // 设置为空时的默认值
)
select new
{
PublisherName = publisher.Name,
BookName = book.Title
};
这篇关于DefaultIfEmpty and Left Outer Join的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!