目标:
检索代码myListAnimals的字符串值“1_2_3”。将来,价值可以是随机的。
我需要在数字之间添加一个“_”。
问题:
我不知道如何使用LINQ做到这一点?
public class Animal
{
private void int _number;
private void string _name;
private bool display;
public int Number
{
get { return _number;}
set { _number = value; }
}
public int Name
{
get { return _name;
set { _name = value; }
}
public bool Display
{
get { return display;
set { display = value; }
}
}
List<Animal> myListAnimal = new List<Animal>
Animal myAnimal = new List<Animal>
myAnimal.Number = 1;
myAnimal.Name = "Dog";
myAnimal.Display = True;
myAnimals.add(myAnimal )
Animal myAnimal2 = new List<Animal>
myAnimal2.Number = 2;
myAnimal2.Name = "Cat";
myAnimal2.Display = True;
myAnimals.add(myAnimal2)
Animal myAnimal3 = new List<Animal>
myAnimal3.Number = 3;
myAnimal3.Name = "Pig";
myAnimal3.Display = True;
myAnimals.add(myAnimal3)
Animal myAnimal4 = new List<Animal>
myAnimal4.Number = 4;
myAnimal4.Name = "Sheep";
myAnimal4.Display = false;
myAnimals.add(myAnimal4)
答案 0 :(得分:1)
注意:您的代码示例不是有效的C#。我假设您可以解决这个问题(需要进行非常简单的基本更改)。那说:
是的,您可以使用LINQ来连接字符串,这最终是您正在做的事情。
var concat = myListAnimal
.Where(a => a.Display)
.Select(a => a.Number.ToString())
.Aggregate((current, next) => current + "_" + next);
Console.WriteLine(concat);
将与您的数据一起输出:
1_2_3
Where()
过滤Display != true
Select()
将数字值投影到字符串序列Aggregate()
进行连接。 答案 1 :(得分:0)
尝试使用StringBuilder
和ForEach
扩展方法。
StringBuilder sb = new StringBuilder();
myAnimals.ForEach(x=> sb.AppendFormat("{0}_",x.Number));
答案 2 :(得分:0)
您的代码无效。首先解决它并尝试这个。
var concat =string.Join("_", myListAnimal.Select(a => a.Number).ToArray());