C# Linq选择列第n个字符=x的行

C# Linq选择列第n个字符=x的行,c#,linq,nhibernate,C#,Linq,Nhibernate,我有一个遗留数据库,需要在其中获取特定类型的所有行。该类型没有可供搜索的列,但幸运的是,有一个命名约定,当它是我想要的类型时,每3个字符都有一个破折号。我想我可以这么做: var sectionsList = (from sec in db.Query<Section>() where (sec.Name[2] == '-') selec

我有一个遗留数据库,需要在其中获取特定类型的所有行。该类型没有可供搜索的列,但幸运的是,有一个命名约定,当它是我想要的类型时,每3个字符都有一个破折号。我想我可以这么做:

var sectionsList = (from sec in db.Query<Section>()
                                     where (sec.Name[2] == '-')
                                     select sec).ToList().Distinct();
var sectionsList=(从db.Query()中的sec开始)
其中(第名称[2]='-')
选择sec.ToList().Distinct();
但是我得到了这个错误:

中发生“System.NotSupportedException”类型的异常 NHibernate.dll,但未在用户代码中处理 信息:字符获取字符(Int32)

我发现这个问题看起来是一样的:
但这种情况涉及到与一个本地值进行比较,而这个本地值可以在手之前抓取。我需要在搜索过程中迭代名称字符串。

我们应该使用
子字符串
方法:

var sectionsList = 
  (
    from sec in db.Query<Section>()
    where sec.Name.Substring(2,1) == "-")
    select sec
  )
  .ToList().Distinct();
var sectionsList=
(
从db.Query()中的sec
其中sec.Name.Substring(2,1)==“-”)
选择秒
)
.ToList().Distinct();
这应该转换成DB函数,比如:
substring(NAME,2,1)='-'

如果这有帮助的话,那太好了;)享受伟大的NHibernate;)