我真的不理解这一点,因为我只涉足过MVC和C。如果我的术语错误或混淆,我道歉,我会尽力回答问题。我有几个这样的模型:
public class DataSharingModels
{
public string ReferenceID { get; set; }
public NBTC NBTCGroup { get; set; }
public Contractors ContractorsGroup { get; set; }
public Coordinators CoordinatorsGroup { get; set; }
public NGO NGOGroup { get; set; }
public Public PublicGroup { get; set; }
public SelectList FA_RA_List { get; set; }
}
public class NBTC
{
public String NBTC_FA_Centroid { get; set; }
public String NBTC_FA_Bound { get; set; }
public String NBTC_RA_Centroid { get; set; }
//more properties...
}
这个
DataSharingModels
类包含
public NBTC NBTCGroup
财产。它不是
public List<NBTC> NBTCGroup
因为被命中的控制器的每个实例将只生成一个。
现在,在我的控制器中,我有一个LINQ语句来选择一个新的NBTC类:
var nbtcVals = (from ds in db.SharingPermissions
where ds.FocalRefID.ToString() == ReferenceID
&& ds.ShareGroup == "NBTC"
select new NBTC
{
NBTC_FA_Centroid = ds.CIP_FA_Centroid,
NBTC_FA_Bound = ds.CIP_FA_Boundary,
NBTC_RA_Centroid = ds.CIP_RA_Centroid,
//more properties...
});
我出错的地方是我想在我的
数据共享模型
模型。我想
nbtcVals
类型为nbtc,但它是iqueryable<.models.nbtc>。我知道我可以这样做,但这似乎是多余的:
DataSharingModels dsm = new DataSharingModels();
if (nbtcVals.Any())
{
foreach (var i in nbtcVals)
{
dsm.NBTCGroup.NBTC_FA_Centroid = i.NBTC_FA_Centroid;
dsm.NBTCGroup.NBTC_FA_Boundary = i.NBTC_FA_Bound;
dsm.NBTCGroup.NBTC_RA_Centroid = i.NBTC_RA_Centroid;
//more properties...
}
}
更直接的方法是什么?一定有一个。我想我还可以在Linq查询中返回匿名类型,然后在
foreach
喜欢
dsm.NBTCGroup.NBTC_RA_Centroid = i.NBTC_RA_Centroid
但这似乎与另一种方式相同。