从linq-to-sql中的Iqueryable <t>获取计数?</t>

时间:2010-05-04 11:27:06

标签: asp.net-mvc linq-to-sql count iqueryable

以下代码似乎没有得到正确的计数.....

 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;

        }

修改

当我使用它时,

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

我的表格中有18行...所以我不能将计数设为18而是提供12

答:

断点似乎不会产生结果,但是响应。写(计数)确实......

2 个答案:

答案 0 :(得分:2)

这应该得到正确的计数:

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

您如何在视图中迭代模型?

您是否可能显示重复的条目?

答案 1 :(得分:1)

您是否可能没有加入正确的列?我问的唯一原因是你的id列在每个类中都没有一致的命名。对于您使用的材料Mat_id,但在您使用的MeasurementTypes中,Id。它让我想知道你是否试图加入一个自然键值来对抗人工主键而不是相应的自然外键。