我是C#新手。我没有运气就在寻找这个。 假设我将数据库结果转换为列表。类似于以下内容
var schedules = db.Schedules.Where(s => s.RequestId == id).ToList();
现在我需要在此列表中添加一个新元素。不是列表项,而是列表中存在的每个列表项的属性。
例如在php中,如果它是一个多维数组,我可以使用foreach循环遍历数组,它很简单$arrayList['new_key'] = "new_value";
如何将这样的属性添加到C#中的上述schedules
列表中?更确切地说; Schedule
是一个数据集。而且新属性也是我想要从不同数据集的另一个属性中获取的东西。
非常感谢。
编辑: 现在我意识到我真正需要的东西。我需要创建一个左外连接来连接Schedule和其他模型。我提出了一个新问题: How to create a simple left outer join in lambda expression in EF ASP.NET MVC5
答案 0 :(得分:2)
“Schedule”(或任何返回的对象集)需要添加 1 属性。因此,要么将属性添加到对象,要么使用原始对象的属性(再加上一个)创建一个新对象,然后选择该对象。 e.g。
class Schedule2 : Schedule
{
public String NewProperty { get; set; }
public Schedule2(Schedule schedule)
{
// assign original properties here from "Schedule". e.g.
base.RequestId = schedule.RequestId;
}
}
然后:
var schedules = db.Schedules
.Where(x => x.RequestId == id)
.Select(x => new Schedule2(x))
.ToList();
1 尽管有DynamicObject
,但在这种情况下我不认为这是合适的。
答案 1 :(得分:0)
你说Schedule
是一个数据集。我假设Schedule
是一个System.Data.DataSet
的实例,只有一个表或System.Data.DataTable
直接。
向DataTable
添加额外属性非常容易。您需要提前完成的任务是创建新DataColumn
并将Columns
添加到DataTable
的{{1}}属性中。像这样:
DataSet ds1 = <whatever method returns the dataset>
DataTable dt1 = ds1.Tables[0];
dt1.Columns.Add("NewCol", typeof(string));
您现在可以使用“NewCol”作为DataRow
来自dt1
的{{1}}的索引器:
dt1.Rows[0]["NewCol"] = "a simple string";