LINQ РАССЧИТЫВАЮТ на несколько столбцов

   .container {
  margin: 0 auto;
  padding: 40px;
  width: 80%;
  color: #333;
  background: #419be0;
}

.slick-slide {
  text-align: center;
  color: #419be0;
  background: white;
  margin: 10px;
} 


 <div class='container'>
  <div class='single-item'>
    <div><h3>1</h3></div>
    <div><h3>2</h3></div>
    <div><h3>3</h3></div>
    <div><h3>4</h3></div>
    <div><h3>5</h3></div>
    <div><h3>6</h3></div>
  </div>
</div>

 var windowWidth = $(window).width(),
 containerWidth = $('.container').width(),
 widthToPadding = ((windowWidth - containerWidth) - 30 ) / 2;

var pxc=widthToPadding+"px";

console.log(pxc);


$(".single-item").slick({
    dots: true,
  slidesToShow: 3,
  centerMode: true,
    slidesToShow: 1,
    arrows: false,
    centerPadding:pxc,
});
6
задан Fabian Steeg 26 January 2009 в 14:40
поделиться

3 ответа

Вот решение, которое я предложил. Обратите внимание, что это близко к решению, предложенному @OdeToCode (но в синтаксисе VB) с одним существенным различием:

Dim temp = _
    (From t In context.MyTable _
     Group t.f1, t.f2, t.f3 By t.title Into g = Group _
     Select title, g).ToList

Dim results = _
    From t In temp _
    Select t.title, _
        f1_count = t.g.Count(Function(x) If(x.f1, False)), _
        f2_count = t.g.Count(Function(x) If(x.f2, False)), _
        f3_count = t.g.Count(Function(x) If(x.f3, False))

Первый запрос делает группировку, но ToList получает сгруппированные данные как есть из сервера. Устранение подсчета здесь мешает получающемуся SQL-оператору производить, ПОДВЫБИРАЕТ для каждого количества. Я делаю подсчет во втором запросе локально.

Это работает, так как я знаю, что первый запрос возвратит управляемое количество строк. Если бы это возвращало миллионы строк, то я должен был бы, вероятно, войти в другое направление.

0
ответ дан 17 December 2019 в 02:34
поделиться

Если Вы хотите придерживаться запроса LINQ и использовать анонимный тип, запрос мог быть похожим:

 var query = 
      from r in ctx.myTable
      group r by r.title into rgroup
      select new
      {
          Title = rgroup.Key,
          F1Count = rgroup.Count(rg => rg.f1 == true),
          F2Count = rgroup.Count(rg => rg.f2 == true),
          F3Count = rgroup.Count(rg => rg.f3 == true)
      };

Прием должен распознать, что Вы хотите считать количество истинных полей (это отображается как nullable bool), который можно сделать с оператором Count и предикатом. Больше информации об операторе группы LINQ здесь: Стандартные Операторы LINQ

4
ответ дан 17 December 2019 в 02:34
поделиться

Я думаю, что это - то, где LINQ падает. Если Вы хотите эффективное использование SQL, если Вы хотите хороший код, используйте LINQ.

Вы могли всегда выполнять запрос непосредственно, так как Вы уже знаете SQL.

class TitleCount {
    public string Title;
    public int Count1;
    public int Count2;
    public int Count3;
}

DataContext dc = new DataContext("Connection string to db");

IEnumerable<TitleCount> query = dc.ExecuteQuery<TitleCount>(
    @"SELECT title, 
             COUNT(f1) as Count1, 
             COUNT(f2) as Count2, 
             COUNT(f3) as Count3 
       FROM myTable GROUP BY title");
2
ответ дан 17 December 2019 в 02:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: