好的,现在这个正在运作
List<string> lstKnownMoves = dsAttacksTemp.Tables[0].Rows.
Cast<DataRow>().Select(r => r["Column1"].ToString()).ToList();
但是我想让它像以下一样工作
List<string> lstKnownMoves = dsAttacksTemp.Tables[0].Rows.
Cast<DataRow>().Select(r => r["Column1"].ToString(),r => r["Column2"].ToString(),r => r["Column3"].ToString()).ToList();
因此,我希望在列表中添加多个列,而不是1个数据集datarow列。 我怎么能这样做?
答案 0 :(得分:3)
如果您只是将字段的内容转储到列表中,则可以使用S electMany。
List<string> lstKnownMoves = dsAttacksTemp.Tables[0].Rows
.Cast<DataRow>()
.SelectMany(r => new string[]{
r["Column1"].ToString(),
r["Column2"].ToString(),
r["Column3"].ToString()})
.ToList();
但是,如果要将字段提取到另一个对象中,可以执行以下操作:
class KnownMove {
public string Column1 {get; set;}
public string Column2 {get; set;}
public string Column3 {get; set;}
}
List<KnownMove > lstKnownMoves = dsAttacksTemp.Tables[0].Rows
.Cast<DataRow>()
.SelectMany(r => new KnownMove{
Column1 = r["Column1"].ToString(),
Column2 = r["Column2"].ToString(),
Column3 = r["Column3"].ToString()})
.ToList();
答案 1 :(得分:1)
好吧,假设您希望能够单独访问每个列,您需要返回一个字符串数组。
List<string[]> lstKnownMoves = dsAttacksTemp.Tables[0].Rows
.Cast<DataRow>().Select(r => new[]
{
r["Column1"].ToString(),
r["Column2"].ToString(),
r["Column3"].ToString()
}).ToList();
然后,对于每一行,您可以按索引获取列的字符串值:
foreach(var item in lstKnownMoves)
Console.WriteLine("Column1: {0} Column2: {1} Column3: {2}", item);
如果你基本上想要一个列的地图,而不想创建一个类来作为所选答案中的元组,你可以使用List<dynamic>
:
List<dynamic> lstKnownMoves = dsAttacksTemp.Tables[0].Rows
.Cast<DataRow>().Select(r => new
{
Column1 = r["Column1"].ToString(),
Column2 = r["Column2"].ToString(),
Column3 = r["Column3"].ToString()
}).ToList<dynamic>();
foreach(var item in lstKnownMoves)
Console.WriteLine("Column1: {0} Column2: {1} Column3: {2}",
item.Column1, item.Column2, item.Column3);
答案 2 :(得分:1)
我假设您需要一个包含多个字符串属性的对象列表,而不是字符串数组列表。
List<object> lstKnownMoves = dsAttacksTemp.Tables[0].Rows.
Cast<DataRow>().Select(r => new {
Col1 = r["Column1"].ToString(),
Col2 = r["Column2"].ToString(),
Col3 = r["Column3"].ToString()
}).ToList();
通过这种方式,您将获得List<T>
,其中T
是一个具有3个字符串属性的匿名对象,即Col1
,Col2
和Col3
。我想这就是你要求的。