日期:2014-05-20  浏览次数:20901 次

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: 是一个匿名方法给一个委托。