我一直在阅读Projections,虽然我发现它们很吸引人,但我发现它们并不是非常透明,微软的文档似乎不完整。
Eugene Prystupa对它的{p> This article非常出色,但仍然让我有疑问。例如,是否需要使用匿名类型进行整形/投影?或者也可以使用自定义命名类型?
例如,以下两个代码示例是否会生成相同的生成SQL?
jQuery(function($){
'use strict';
$(document).ready(function(){
var elem = $('li.list-item'),
$listPosition = $.map(elem, function(el, i) { return $(el).offset().top; }),
$listURL = $.map(elem, function(el,i) { return $(el).find('a').attr('href'); }),
$bg = $('.container');
console.log($listPosition);
console.log($listURL);
//PRELOAD IMAGES
$.fn.preload = function() {
this.each(function(){
$('<img/>')[0].src = this;
});
}
$($listURL).preload();
//SCROLL CHANGE
$(window).on('scroll', function () {
var windowScroll = $(this).scrollTop();
$.each($listPosition, function (i, pos) {
if (windowScroll >= pos) {
$bg.css('background', 'url(' + $listURL[i] + '), black no-repeat center center fixed');
}
});
});
});
});
var q = ctx.CustomerAddresses.Select(x =>
new {
CustomerAddress = ca,
ca.Customer,
ca.Address
}).Take(3);
答案 0 :(得分:1)
我总是喜欢使用强类型投影模型,而不是动态 - 生成的SQL将是相同的。
就SQL而言,它需要知道的是它需要返回哪些列来满足请求。无论是填充动态对象还是自定义类型对象,从SQL的角度来看都无关紧要。
检查实际执行的SQL的一种好的/快速的方法是运行SQL事件探查器,然后在实现Linq-to-sql查询的结果时查看数据库中的内容