我很确定这个问题已经被多次询问了,我再次提出要求,但我做了一些研究,不幸的是我没有在互联网上找到我的乐趣......
我有一个像这样的IQueryable:
triggers = triggers.Where(t => GetIdFromName(t.Name) == filter.Id.ToString());
Run Code Online (Sandbox Code Playgroud)
函数GetIdFromName获取名称的一部分以检索Id:
public string GetIdProfiloFromName(string name)
{
return name.Substring(name.IndexOf(NameFirstSeparator)+1,name.IndexOf(NameSecondSeparator)-name.IndexOf(NameFirstSeparator)-1);
}
Run Code Online (Sandbox Code Playgroud)
我知道这不好,但它是迄今为止我能做到的最好的.我的问题是使用这两个语句不允许使用Linq to sql.应用程序抛出错误,但这没关系:
triggers = triggers.Where(t => t.Name.Substring(t.Name.IndexOf(NameFirstSeparator) + 1, t.Name.IndexOf(NameSecondSeparator) - t.Name.IndexOf(NameFirstSeparator) - 1) == filter.Id.ToString());
Run Code Online (Sandbox Code Playgroud)
我怀疑GetIdFromName函数应该给出一些不同于字符串的东西,但我真的很想知道是什么以及如何......
谢谢你的启发,
约恩
[编辑]到目前为止我所理解的更新:
我不能做我想做的事,因为为了做到这一点,我需要做一些这样的事情:
static Expression<Func<Trigger,string, bool>> IsId = (a,b) => a.name.Substring(a.name.IndexOf(NameFirstSeparator) + 1, a.name.IndexOf(NameSecondSeparator) - a.name.IndexOf(NameFirstSeparator) - 1)==b;
Run Code Online (Sandbox Code Playgroud)
但这不会进入
triggers = triggers.Where(func<Trigger,bool>);
Run Code Online (Sandbox Code Playgroud)
我可以设法做到这一点,但我必须从我的数据库中获取所有结果才能在内存中执行我的测试.
非常感谢,你让我对此变得非常清楚!!
| 归档时间: |
|
| 查看次数: |
250 次 |
| 最近记录: |