不能在C#中使用Count()

时间:2016-09-02 15:14:33

标签: c# linq count asp.net-core

我有一个使用.NET CORE的项目,我的控制器已经有了System.Linq。不知何故,我在尝试使用Count()时仍然有错误。

using xxx.Core;
using xxx.DataAccess;
using xxx.DataAccess.Azure;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Linq;

namespace xxx.Api.Controllers
{
    [Route("api/[controller]")]
    public class ResourcesController : Controller
    {
         private static DocumentDB _db = new DocumentDB();

        [HttpGet("{id}")]
        public IActionResult Get(string id)
        {
             using (var unitOfWork = new UnitOfWork(_db))
             {
                 var r = unitOfWork.Resources.Get(id);

                 Models.resource result =  ConvertResourceModel(r);

                 if (result.Count() != 1)
                {
                    return NotFound();
                }
                else
                {
                    return Ok(result);
                }
            }
        }

if(result.Count()!= 1)的行在Count()上有一个错误说“资源不包含Count的定义而没有扩展方法Count接受类型资源的第一个参数... “我的资源模型定义如下:

public class resource
{
    public string id { get; set; }
    public string description { get; set; }
    public List<translations> translations { set; get; }
    public DateTime modified { get; set; }
    public DateTime accessed { get; set; }
    public string by { get; set; }


}

public class translations {
    public string language { set; get; }
    public string content { set; get; }
    public DateTime modified { get; set; }
    public DateTime accessed { get; set; }
    public string by { get; set; }

}

我不确定为什么。有帮助吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您的资源不是列表而是对象。更好的实施将是这样的。

    [HttpGet("{id}")]
    public IActionResult Get(string id)
    {
         using (var unitOfWork = new UnitOfWork(_db))
         {
             var r = unitOfWork.Resources.Get(id);

             if (r == null)
             {
                return NotFound();
             }

             return Ok(ConvertResourceModel(r));
        }
    }