【发布时间】:2016-10-27 11:17:04
【问题描述】:
我试图通过 MVC 控制器中的 POST 请求将字符串变量传递到 LINQ 查询中。我在动态 LINQ 示例上尝试了多种变体(这似乎是主要推荐的方法。
预期结果
一个 IEnumerable 数组,其中包含基于 ng-repeat 中显示的指定 SiteID 的结果。
非动态 LINQ 查询
public IEnumerable<SpecialsViewModel> GetAllSpecialsBySiteID(string siteID)
{
var query = (from s in _calcContext.Specials
where s.SiteID == siteID
select new SpecialsViewModel
{
ID = s.ID,
SiteID = s.SiteID,
Title = s.Title,
Description = s.Description,
Price = s.Price,
Position = s.Position,
EffectiveDate = s.EffectiveDate,
CreationDate = s.CreationDate,
Status = s.Status,
LastUpdated = s.LastUpdated
}).ToList();
return query;
}
结果
没有返回结果。
动态 LINQ 查询
public IEnumerable<SpecialsViewModel> GetAllSpecialsBySiteID(string siteID)
{
var query = (from s in _calcContext.Specials
select new SpecialsViewModel
{
ID = s.ID,
SiteID = s.SiteID,
Title = s.Title,
Description = s.Description,
Price = s.Price,
Position = s.Position,
EffectiveDate = s.EffectiveDate,
CreationDate = s.CreationDate,
Status = s.Status,
LastUpdated = s.LastUpdated
});
query = query.Where("SiteID=@0", siteID);
return query;
}
结果
没有返回结果。
【问题讨论】:
-
如果您删除 where 子句,它是否返回任何结果?
-
你能确认当在数据库中选择这个时,
where会返回任何记录吗? -
是的,我可以确认,当我在数据库查询中提供两个字符串时,它会按预期返回结果,并且如果我省略 where 子句,还会返回整个结果集。