我正在创建一个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()
,但这只会返回语法问题。如何退回包含我的标准(“会议”一词)的每个版本?
答案 0 :(得分:1)
FirstOrDefault
顾名思义将返回找到的第一个记录或为空
要返回所有结果,您应该使用下面的LINQ语句
return entities.PressReleases.Where(e => e.ShortDescription.Contains(criteria)).ToList();
.Where()
指定我们的过滤条件,.ToList()
针对我们的数据库执行并返回结果
现在,由于您要返回列表,因此必须更新方法签名以反映正确的返回类型
public List<PressReleases> Get(string criteria)