首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

linq中loadwith求解~解决方法

2012-03-07 
linq中loadwith求解~C# codeNorthwnd db new Northwnd(@c:\northwnd.mdf)DataLoadOptions dlo new

linq中loadwith求解~

C# code
Northwnd db = new Northwnd(@"c:\northwnd.mdf");DataLoadOptions dlo = new DataLoadOptions();dlo.LoadWith<Customer>(c => c.Orders);db.LoadOptions = dlo;var londonCustomers =    from cust in db.Customers    where cust.City == "London"    select cust;foreach (var custObj in londonCustomers){    Console.WriteLine(custObj.CustomerID);}

上面的dlo.LoadWith<Customer>(c => c.Orders);

帮忙解答下。c 和=>的含义或者c => c.Orders的含义,刚学,迷茫了

[解决办法]
Lambda 表达式
http://msdn.microsoft.com/zh-cn/library/bb397687.aspx
[解决办法]
使用Lambda指明需要检索的相关字段
LoadWith<Customer>(c => c.Orders) 
表示传入参数Customer c 返回c.Orders,这里它的返回类型应该是IEnumrable<Order>,
也就是最后查询的数据中会将这个Custom相关的Orders也返回来
http://msdn.microsoft.com/zh-cn/library/Bb386917(v=VS.100).aspx
[解决办法]
取个简单的例子,比如Northwind数据库中的Customer与Order表,有一个父子关系,即一个customer可以有多份order。

默认情况下,由于LINQ的迟延加载,因此你的LINQ查询在查询Customer时不会自动加载Order表的内容,而要等你引用Order表的内容时,才会加载Order表,于是可能产生一些负责的性能影响。

使用LoadWith()后,将可以在Customer被加载时,即同时加载子表Order,从而减少多余的SQL查询语句生成,而提升性能。但这并非绝对,有时也可能带来冗余的数据,反而降低性能。

http://www.cnblogs.com/Abbey/archive/2011/07/17/2107917.html
[解决办法]
看看 LoadWith 方法参数:是一个 委托,
 再看看 c => c.Orders: 是一个匿名方法给一个委托。

热点排行