2016-03-04 57 views
0

我想把类型字符串列表中的所有项目放入类型对象的列表。c# - 如何把列表<string>项目到列表<object>

这里是我的类:

public class Object 
{ 
    public string url; 
    public bool case; 
    public void Add(string item) 
    { 
     url = item; 
    } 
} 

我曾尝试以下(什么是字符串类型,从中我试图将元素添加到我的新类型的对象名单列表):

List<Object> finals = something.OfType<Object>().ToList(); 

List<Object> finals = new List<Object>(); 
foreach(var item in something) 
{ 
    finals.Add(item); 
} 

我想是从我的对象类有“URL”以与在t每个元素等于他列出和“案件”被设置为虚假的所有人。

我希望我已经够清楚了。提前致谢 !

+1

'Object'是一个非常糟糕的名字,你将会频繁地遇到与'System.Object'的冲突。我会建议选择一个不同的名字。 –

+0

@ScottChamberlan该名称仅用于实例目的 – Garnyatar

+1

@Garnyatar如果您想为示例类“MyClass”的名称更好。列表的创建列表与创建列表不同。在第一种情况下,包含对象的简单转换就足够了,后者必须创建新的MyClass对象。 – Domysee

回答

2

首先你需要创建一个Object的实例,然后你可以将它添加到你的列表中。 属性case默认为false。

List<Object> finals = new List<Object>(); 
foreach(var item in something) 
{ 
    var newObject = new Object(item); 
    finals.Add(newObject); 
} 
+0

谢谢。这对我来说工作得很好! – Garnyatar

1

取出字符串列表中的每个项目,遍历它们并返回具有两个属性,url和大小写的对象列表。将案例设置为false。 Yield return将返回一个可枚举的对象接口。

public class MyObject { 
    public string url { get; set; } 
    public bool case { get; set; } 
} 

public IEnumerable<MyObject> process(List<string> listOfUrls) { 
    foreach(var item in listofUrls) { 
     yield return new MyObject { 
      url = item; 
      case = false; 
     } 
    } 
} 
2

对于您的情况,您可以通过使用LINQ轻松实现这一点。

List<Object> finals = something.Select(s => new Object(s)).ToList(); 

bool默认值是false,所以你不需要任何特定的二传手它。

2

下面是特定于你的情况下,代码:

IEnumerable<Object> finals = strings.Select(s => new Object() { url = s }); 

case属性将默认为false,这样你就不必键入明确出来。