具有数据模型和实体的WebApi Lambda

时间:2019-03-20 20:04:50

标签: c# lambda

我正在创建一个WebAPI,当被/api/mediareleases调用时返回所有值,但是我想添加一个QueryString,以便提取更多特定数据。

数据模型

public partial class PressReleases
{
    public int ID { get; set; }
    public string PostDateShown { get; set; }
    public string ShortDescription { get; set; }
    public string FileName { get; set; }
}

控制器

public IEnumerable<PressReleases> Get()
{
    using (MediaReleasesEntities entities = new MediaReleasesEntities())
    {
        //returns every release
        return entities.PressReleases.ToList();
    }
}

public PressReleases Get(string criteria)
{
    using (MediaReleasesEntities entities = new MediaReleasesEntities())
    {
        try
        {
            //try to convert it to date
            DateTime dt = DateTime.Parse(criteria);

            //do something    
        }
        catch
        {
            //search by description
            return entities.PressReleases.FirstOrDefault(e => e.ShortDescription.Contains(criteria)); 
        }
    }
}

我想获取一个日期并搜索该日期或搜索说明中的关键字。这目前有效,但我只返回一个值。我尝试在lambda中使用Select()All(),但这只会返回语法问题。如何退回包含我的标准(“会议”一词)的每个版本?

1 个答案:

答案 0 :(得分:1)

FirstOrDefault顾名思义将返回找到的第一个记录或为空

要返回所有结果,您应该使用下面的LINQ语句

return entities.PressReleases.Where(e => e.ShortDescription.Contains(criteria)).ToList(); 

.Where()指定我们的过滤条件,.ToList()针对我们的数据库执行并返回结果

现在,由于您要返回列表,因此必须更新方法签名以反映正确的返回类型

public List<PressReleases> Get(string criteria)