Linq查询日期的年份

时间:2015-06-24 10:23:03

标签: c# asp.net-mvc

这是我在控制器中的代码:

}else if (reports == "Decommissioned")
            {
                if (reports != String.Empty)
                {
                    var date = (Convert.ToInt64(specific)) - 5;
                    desktop = desktop.Where(x => x.dt_date_delivered.Value.Year == date);
                    count = desktop.Where(x => x.dt_date_delivered.Value.Year == date).ToList().Count();
                }
            }

此查询位于控制器中的函数内部。我想知道为什么这不起作用,其他控制器我没有把这个查询放在函数中,它的工作原理。当我尝试运行此代码时,错误为Cannot implicity ceonvert type 'System.Collections.Generic.IEnumerable<InSys_Models.Desktop_reports_vw>' to 'System.Collections.Generic.List<InSys.Models.Desktop_reports_vw>'. An explicit conversion exists(are you missing a cast?)

2 个答案:

答案 0 :(得分:2)

因为desktop.Where()函数返回&#39; IEnumerable&#39;你应该打电话给ToList()&#39;将IEnumerable转换为List:

// Code goes here
var h = 500;
var w = 750;
var padding = 50;
//set your images and data here
var monthlySales = [{
  'stock': 'GOOG',
  'count': 500,
  'img': "https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcTccGK4ZWQcI3WB--hytI1DFaeZ8ii-6euDWrm-baUtAxR7w9OrWg"
}, {
  'stock': 'MSFT',
  'count': 250,
  'img': "http://tr1.cbsistatic.com/fly/171-fly/bundles/techrepubliccore/images/icons/standard/icon-user-default.png"

}, {
  'stock': 'FB',
  'count': 50,
  'img': "https://cdn1.iconfinder.com/data/icons/industry-2/96/Mine-512.png"

}, {
  'stock': 'AAPL',
  'count': 100,
  'img': "https://cdn1.iconfinder.com/data/icons/industry-2/96/Mine-512.png"

}, {
  'stock': 'EBAY',
  'count': 5,
  'img': "https://cdn1.iconfinder.com/data/icons/industry-2/96/Mine-512.png"

}, {
  'stock': 'BABA',
  'count': 37,
  'img': "https://cdn1.iconfinder.com/data/icons/industry-2/96/Mine-512.png"
}];


var xScale = d3.scale.linear().domain([65, 450]).range([0, w]).nice();
var yScale = d3.scale.linear().domain([0, d3.max(monthlySales, function(d) {
  return d.count;
})]).range([h, 0 + padding]).nice();
var radiusScale = d3.scale.linear().domain([0, d3.max(monthlySales, function(d) {
  return d.count;
})]).range([10, 100]).nice();
var opacityScale = d3.scale.linear().domain([0, d3.max(monthlySales, function(d) {
  return d.count;
})]).range([1, 0.1]).nice();

function ordinalValue(item) {
  var strLen = item.length;
  var total = 0;
  for (var i = 0; i < strLen; i++) {
    total += item.charCodeAt(i);
  }
  console.log(total);
  return total;
}


var svg = d3.select('body').append('svg').attr({
  width: w,
  height: h,
  style: "outline: thin solid blue"
});

var dots = svg.selectAll('g')
  .data(monthlySales)
  .enter()
  .append("g");

  dots.append('circle')
  .attr({
    cx: function(d) {
      var ordValue = ordinalValue(d.stock);
      return xScale(ordValue);
    },
    cy: function(d) {
      return yScale(d.count);
    },
    r: function(d) {
      return radiusScale(d.count);
    },
    fill: function(d) {
      return '#' + Math.random().toString(16).substr(-6);
    }
  }).style({
    "fill-opacity": function(d) {
      return opacityScale(d.count);
    },
    "stroke": function(d) {
      return '#' + Math.random().toString(16).substr(-6);
    }
  });
//adding an image to the group
dots.append("svg:image")
    .attr("xlink:href",function(d) {return d.img})
    .attr("height", "20")
    .attr("width", "20")
    .attr({
    x: function(d) {
      var ordValue = ordinalValue(d.stock);
      return xScale(ordValue)-10;
    },
    y: function(d) {
      return yScale(d.count)-10;
    },
  });

答案 1 :(得分:2)

您需要在Select的末尾调用ToList以获取列表,而不是IEnumerable。