向基于模型的列表添加值
Adding a value to a List which is based on a Model
背景
我目前正在尝试向模型列表中添加一个值,但这似乎与我在 JavaScript 中的做法不同。
型号
public class ContentBase
{
public string Name { get; set; }
public string Description { get; set; }
public string LastModifiedTime { get; set; }
public string KeyWords { get; set; }
public string Content { get; set; }
public string UniqueId { get; set; }
public string library { get; set; }
public string ContentSummary { get; set; }
public string[] images { get; set; }
}
功能增值
List<ContentBase> returnList = new List<ContentBase>();
foreach (HtmlNode img in htmlDocument.DocumentNode.SelectNodes("//img"))
{
HtmlAttribute att = img.Attributes["src"];
returnList.Add(images = att.Value); << this is wrong, just trying to give an idea of my intentions
}
问题
我正在尝试将 HtmlAttribute att = img.Attributes["src"];
的结果添加到我列表的 string[] images
中。这样,一旦完成此迭代,我将能够在列表 string[] images
的部分
中获得每个循环的所有值
更新
这是填充列表中其他项目的前面的函数
string content = "";
if (includeContent == true)
{
content = rslt[ContentBase.fastContent] != null ? rslt[ContentBase.fastContent].ToString() : "";
}
returnList.Add(new ContentBase()
{
UniqueId = rslt[ContentBase.fasstUniqueId] != null ? rslt[ContentBase.fasstUniqueId].ToString() : "",
LastModifiedTime = rslt[ContentBase.fasstLastModifiedTime] != null ? rslt[ContentBase.fasstLastModifiedTime].ToString().Substring(0, 8) : "",
Name = rslt[ContentBase.fastName] != null ? rslt[ContentBase.fastName].ToString() : "",
Description = rslt[ContentBase.fastDescription] != null ? rslt[ContentBase.fastDescription].ToString() : "",
KeyWords = rslt[ContentBase.fastKeyWords] != null ? rslt[ContentBase.fastKeyWords].ToString() : "",
ContentSummary = rslt[ContentBase.fasstContentSummary] != null ? rslt[ContentBase.fasstContentSummary].ToString() : "",
Content = content,
});
这里的returnList
是一个ContentBase
的列表,所以它的项应该是对应class的对象。所以向其中添加项目的代码如下所示:
foreach (HtmlNode img in htmlDocument.DocumentNode.SelectNodes("//img"))
{
HtmlAttribute att = img.Attributes["src"];
returnList.Add(new ContentBase(){library="some value",images = new string[]{att.value}}
}
您可以先创建一个 ContentBase
对象,然后添加它:
List<ContentBase> returnList = new List<ContentBase>();
foreach (HtmlNode img in htmlDocument.DocumentNode.SelectNodes("//img"))
{
HtmlAttribute att = img.Attributes["src"];
ContentBase base = new ContentBase();
base.image = att.value;
returnList.Add(base);
}
您甚至可以在不使用 foreach
循环的情况下使用 Linq,如下所示:
List<ContentBase> returnList = htmlDocument.DocumentNode.SelectNodes("//img")
.Select(img => new ContentBase {images = new[] {img.Attributes["src"].Value}}).ToList();
returnList
是一个 List<ContentBase>
,因此您应该向列表中添加一个新的 ContentBase
。
ContentBase
对象包含一个 string[] images
属性,您可以在循环中或使用 linq 创建它并将其传递给新创建的 ContentBase
。您还应该提供 created ContentBase
的其他属性的值。例如:
var returnList = new List<ContentBase>();
returnList.Add(new ContentBase()
{
// Initialize properties the same way you are setting them
// Including the images property this way:
images = htmlDocument.DocumentNode.SelectNodes("//img")
.Select(x=>x.Attributes["src"].Value).ToArray()
});
背景
我目前正在尝试向模型列表中添加一个值,但这似乎与我在 JavaScript 中的做法不同。
型号
public class ContentBase
{
public string Name { get; set; }
public string Description { get; set; }
public string LastModifiedTime { get; set; }
public string KeyWords { get; set; }
public string Content { get; set; }
public string UniqueId { get; set; }
public string library { get; set; }
public string ContentSummary { get; set; }
public string[] images { get; set; }
}
功能增值
List<ContentBase> returnList = new List<ContentBase>();
foreach (HtmlNode img in htmlDocument.DocumentNode.SelectNodes("//img"))
{
HtmlAttribute att = img.Attributes["src"];
returnList.Add(images = att.Value); << this is wrong, just trying to give an idea of my intentions
}
问题
我正在尝试将 HtmlAttribute att = img.Attributes["src"];
的结果添加到我列表的 string[] images
中。这样,一旦完成此迭代,我将能够在列表 string[] images
的部分
更新
这是填充列表中其他项目的前面的函数
string content = "";
if (includeContent == true)
{
content = rslt[ContentBase.fastContent] != null ? rslt[ContentBase.fastContent].ToString() : "";
}
returnList.Add(new ContentBase()
{
UniqueId = rslt[ContentBase.fasstUniqueId] != null ? rslt[ContentBase.fasstUniqueId].ToString() : "",
LastModifiedTime = rslt[ContentBase.fasstLastModifiedTime] != null ? rslt[ContentBase.fasstLastModifiedTime].ToString().Substring(0, 8) : "",
Name = rslt[ContentBase.fastName] != null ? rslt[ContentBase.fastName].ToString() : "",
Description = rslt[ContentBase.fastDescription] != null ? rslt[ContentBase.fastDescription].ToString() : "",
KeyWords = rslt[ContentBase.fastKeyWords] != null ? rslt[ContentBase.fastKeyWords].ToString() : "",
ContentSummary = rslt[ContentBase.fasstContentSummary] != null ? rslt[ContentBase.fasstContentSummary].ToString() : "",
Content = content,
});
这里的returnList
是一个ContentBase
的列表,所以它的项应该是对应class的对象。所以向其中添加项目的代码如下所示:
foreach (HtmlNode img in htmlDocument.DocumentNode.SelectNodes("//img"))
{
HtmlAttribute att = img.Attributes["src"];
returnList.Add(new ContentBase(){library="some value",images = new string[]{att.value}}
}
您可以先创建一个 ContentBase
对象,然后添加它:
List<ContentBase> returnList = new List<ContentBase>();
foreach (HtmlNode img in htmlDocument.DocumentNode.SelectNodes("//img"))
{
HtmlAttribute att = img.Attributes["src"];
ContentBase base = new ContentBase();
base.image = att.value;
returnList.Add(base);
}
您甚至可以在不使用 foreach
循环的情况下使用 Linq,如下所示:
List<ContentBase> returnList = htmlDocument.DocumentNode.SelectNodes("//img")
.Select(img => new ContentBase {images = new[] {img.Attributes["src"].Value}}).ToList();
returnList
是一个 List<ContentBase>
,因此您应该向列表中添加一个新的 ContentBase
。
ContentBase
对象包含一个 string[] images
属性,您可以在循环中或使用 linq 创建它并将其传递给新创建的 ContentBase
。您还应该提供 created ContentBase
的其他属性的值。例如:
var returnList = new List<ContentBase>();
returnList.Add(new ContentBase()
{
// Initialize properties the same way you are setting them
// Including the images property this way:
images = htmlDocument.DocumentNode.SelectNodes("//img")
.Select(x=>x.Attributes["src"].Value).ToArray()
});