7

我正在使用 Linq DataContext.ExecuteQuery("some sql statement") 来填充对象列表

var incomes = db.ExecuteQuery<IncomeAggregate>(sqlIncomeStatement(TimeUnit));

IncomeAggregate是我为保存此查询记录的结果而创建的对象。

此对象的属性之一是 YQM:

public int Year { get; set; }
public int Quarter { get; set; }
public int Month { get; set; }

public string YQM 
{ 
    get { return string.Format("Y{0}-Q{1}-M{2}", Year, Quarter, Month); } 
}
... more properties

一切都可以编译,但是当它执行 Linq 时,我收到以下错误:

无法为成员“YQM”赋值。它没有定义setter。

但显然,我不想“设置”它。Y、Q 和 M 由查询提供给数据库。查询不提供 YQM。我是否需要以某种方式更改对象的定义?(我刚刚开始使用 Linq,我还在跟上进度,所以它可能非常简单)

4

2 回答 2

7

好吧,我最后只是将二传手设为私有

public string YQM {
    get 
    { 
        return string.Format("Y{0}-Q{1}-M{2}", Year, Quarter, Month); 
    }

    private set { ;} 
}

似乎工作。

于 2011-08-01T11:55:14.633 回答
1

Linq 假设该对象的属性是要从数据库加载的值,显然它无法设置该YQM属性,因为它没有设置器。尝试使 YQM 成为一种方法:

public string YQM() 
{ 
    return string.Format("Y{0}-Q{1}-M{2}", Year, Quarter, Month);  
}
于 2011-07-21T08:25:58.083 回答