我尝试使用Linq to Sql创建搜索功能。
我有一个Sale类,一个AnimalId和一个Animal类,其结构名为" AgeStruct"。此结构作为字符串(" AgeDB")存储到Animal表中,并定义运算符(<,==,>)以便能够知道谁是最老的或最年轻的。 动物"年龄"属性正在返回基于" AgeDB"的AgeStruct。值。
public partial class Animal
{
public AgeStruct Age
{
get { return new AgeStruct(AgeDB); }
set { AgeDB = value.ToFormat(); }
}
public struct AgeStruct : IComparable
{
...
}
}
我的搜索功能将SaleCriteria实例作为参数,其中特别包含Age属性," AgeStruct"类型。
在我的where子句中,我想要返回所有比标准旧的动物。年龄,但以下是返回:
"无法格式化节点' new'作为SQL"
执行
public static List<Sale> Search(SaleCriteria criteria)
{
var db = new DBDataContext();
if (criteria.Age != null)
{
result = (System.Linq.IQueryable<Sale>)
from sale in db.Sale
join animal in db.Animal on sale.AnimalId equals animal.Id
where new Animal.AgeStruct(animal.AgeDB) > criteria.Age
select sale;
}
}
我也试过这个:
where Animal.Age > criteria.Age
但显然&#34;年龄&#34;不是专栏,Linq抱怨。
我也可以这样做:
where Animal.AgeDB > criteria.Age.ToFormat()
但&#34;&gt;&#34;运算符不适用于字符串类型,无论如何都可能无法返回正确的结果。
有人会知道如何解决这个问题吗?
非常感谢!