在执行LINQ to SQL Projections时是否需要匿名类型?

时间:2016-09-02 09:32:53

标签: c# linq-to-sql

我一直在阅读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);

1 个答案:

答案 0 :(得分:1)

我总是喜欢使用强类型投影模型,而不是动态 - 生成的SQL将是相同的。

就SQL而言,它需要知道的是它需要返回哪些列来满足请求。无论是填充动态对象还是自定义类型对象,从SQL的角度来看都无关紧要。

检查实际执行的SQL的一种好的/快速的方法是运行SQL事件探查器,然后在实现Linq-to-sql查询的结果时查看数据库中的内容