получить счет от Iqueryable <T>в linq-to-sql? - PullRequest
2 голосов
/ 04 мая 2010

Следующий код, кажется, не дает правильное количество .....

 var materials = consRepository.FindAllMaterials().AsQueryable();
 int count = materials.Count();

Это способ сделать это ... Вот мой репозиторий, который извлекает записи ...

public IQueryable<MaterialsObj> FindAllMaterials()
        {
           var materials =  from m in db.Materials
            join Mt in db.MeasurementTypes on m.MeasurementTypeId equals Mt.Id
                   where m.Is_Deleted == 0
                   select new MaterialsObj()
                   {
                       Id = Convert.ToInt64(m.Mat_id),
                       Mat_Name = m.Mat_Name,
                       Mes_Name = Mt.Name,
                   };
            return materials;

        }

Edit:

когда я использую это,

        var materials = consRepository.FindAllMaterials().AsQueryable();
        return View("Materials", materials);

В моей таблице 18 строк ... Так что вы не можете получить счет как 18, вместо этого он дает 12

Ans:

Точка останова, кажется, не дает мне результат, но ответ. Записать (считать) сделал ...

Ответы [ 2 ]

2 голосов
/ 04 мая 2010

Это должно получить правильное количество:

int count = consRepository.FindAllMaterials().Count();

Как вы просматриваете модель в вашем представлении?

Возможно ли, что вы отображаете повторяющиеся записи?

1 голос
/ 04 мая 2010

Возможно ли, что вы не присоединяетесь к правильным столбцам? Единственная причина, по которой я спрашиваю, состоит в том, что ваши столбцы идентификаторов не имеют одинакового имени в каждом классе. Для материалов вы используете Mat_id, но в MeasurementTypes вы используете просто Id. Это заставляет меня задуматься, пытаетесь ли вы соединить значение естественного ключа с искусственным первичным ключом вместо соответствующего естественного внешнего ключа.

...