【发布时间】:2009-11-15 05:20:00
【问题描述】:
我有一门课,里面有一个标题。我有一个属性可以返回该标题进行了一些调整。如果我对调整后的标题属性进行 Linq to Sql 查询,我会得到“不支持”异常。如果我做同样的事情,该属性直接在 linq 查询中起作用。关于如何使该属性在 Linq to Sql 中工作的任何想法?
这里是房产
public string SeoName
{
get { return Name.ToLower().Replace(" ", "").Replace("&", "and"); }
}
这是不起作用的查询(我希望能够做什么)。
var series = from s in videoRepo.GetShows()
where s.Topic.SeoName.Equals(topicSeoName)
select s;
这是一个执行相同操作且有效的查询
var series = from s in videoRepo.GetShows()
where s.Topic.Name.ToLower().Replace(" ", "")
.Replace("&", "and").Equals(topicSeoName)
select s;
如何构造 top 属性以使用第一个 linq 查询?
我的最终答案
添加了一个表达式来评估我正在寻找的内容
public static Expression<Func<Show, bool>>
TopicSeoNameEquals(string name)
{
return t => t.Topic.Name.ToLower().
Replace(" ", "").Replace("&", "").Equals(name);
}
然后,我只是在 linq 查询中调用它有点不同
var test = Show.TopicSeoNameEquals(topicSeoName);
var series = from s in videoRepo.GetShows().Where(test)
select s;
【问题讨论】:
标签: c# linq-to-sql