产生IEnumerable

时间:2012-11-08 12:18:25

标签: asp.net linq

我已将我的表“tblFile”添加到我的.dbml中,但它的类型是“EntitySet tblFiles

但对于具有相同Association的另一个表,其类型为“tblDocTranstoCon” 所以我在下面的linq查询中遇到问题“w”不是IEnumerable而是“z”是“IEnumerable”

z = document.tblTransmittalls.Select(dp => dp.tblDocTranstoCons),
w = document.tblTransmittalls.Select(dx => dx.tblFiles)

如何解决生成IEnumerable的问题。

[Association(Name="tblTransmittall_tblFile", Storage="_tblFiles", ThisKey="DocID,TransId", OtherKey="DocId,TransId")]
public EntitySet<tblFile> tblFiles
{
    get
    {
        return this._tblFiles;
    }
    set
    {
        this._tblFiles.Assign(value);
    }
}

[Association(Name="tblTransmittall_tblDocTranstoCon", Storage="_tblDocTranstoCons", ThisKey="DocID,TransId", OtherKey="Docid,Transid", IsUnique=true, IsForeignKey=false)]
public tblDocTranstoCon tblDocTranstoCons
{
    get
    {
        return this._tblDocTranstoCons.Entity;
    }

2 个答案:

答案 0 :(得分:0)

你应该试试这个

w = document.tblTransmittalls.SelectMany(dx => dx.tblFiles);

因为tblFiles的返回类型为EntitySet<tblFile>(这是一个集合),而tblDocTranstoCons的返回类型为tblDocTranstoCon

或者您应该在dbml designer中更改其关联。

答案 1 :(得分:0)

这看起来像SelectMany的作业,它从一个列表中的每个项目获取一个“子列表”,然后将所有子列表连接成一个列表(因为EntitySet<T>实现IEnumerable<T>)。尝试:

w = document.tblTransmittalls.SelectMany(dx => dx.tblFiles)