Linq to sql search query:“struct”类型的问题

时间:2015-03-03 10:15:41

标签: c# linq struct

我尝试使用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;运算符不适用于字符串类型,无论如何都可能无法返回正确的结果。

有人会知道如何解决这个问题吗?

非常感谢!

0 个答案:

没有答案