use*_*543 5 .net c# linq entity-framework
我是Linq的新手,想知道你是否可以帮我理解以下Linq之间的区别?例如...
//normal select
var contacts = entity.Contacts.Select(n => n.FirstName);
//select new
var contacts2 = entity.Contacts.Select(n => new { n.FirstName });
//normal select output
foreach (var c in contacts)
Response.Write(c + "<br/>");
//select new output
foreach (var c in contacts2)
Response.Write(c.FirstName + "<br/>");
Run Code Online (Sandbox Code Playgroud)
我能看到的唯一区别是,在正常选择中,firstname(字符串)存储在集合中,而在select new中,联系对象存储在collecton中,firstname由其属性访问.select new也返回仅在语句中选择的属性.
我注意到的另一个不同之处是您可以在select new中返回多个特定属性.
在什么情况下你会选择一个而不是另一个?
谢谢您的帮助.
支持Richard Ev的答案:
如果您不熟悉匿名类型,请破解ildasm并将您的exe作为输入.
你会得到这样的东西:

你看到以<> f_AnonymousType()开头的东西是Richard Ev所说的那个.你的语法new被翻译成一个新类(名称由编译器决定).这就是为什么var关键字在使用匿名类型时如此有用.
| 归档时间: |
|
| 查看次数: |
755 次 |
| 最近记录: |