我正在学习更多关于LINQ和Lambda表达式的过程,但在这个阶段,我根本就没有"获取"Lambda表达式.
是的......我是这些新概念的新手.
我的意思是,我看到的每个例子都说明了如何添加或减去参数.
那些更复杂的东西怎么样?
为了帮助我获得更好的理解,我已经为希望参与的任何人发布了一个小挑战.我有以下方法将接受任何字符串,并将空格放在任何大写字符和它们的前一个邻居之间(如下所示).
即
"SampleText"="Sample Text"
"DoesNotMatterHowManyWords"="不重要多少字"
这是代码;
public static string ProperSpace(string text)
{
var sb = new StringBuilder();
var lowered = text.ToLower();
for (var i = 0; i < text.Length; i++)
{
var a = text.Substring(i, 1);
var b = lowered.Substring(i, 1);
if (a != b) sb.Append(" ");
sb.Append(a);
}
return sb.ToString().Trim();
}
Run Code Online (Sandbox Code Playgroud)
我确信上面的方法可以重写为与LINQ或Lambda表达式一起使用.我希望这项练习能够帮助我开启这些新概念.
此外,如果您有任何LINQ或Lambda教程的良好链接,请提供.
编辑
感谢所有贡献的人.虽然当前的方法确实可以完成这项工作,但我很高兴看到它可以被修改为使用lambda表达式.我也承认这可能不是LINQ的最佳例子.
这是使用Lambda表达式的新更新方法(经测试可用);
public static string ProperSpace(string text)
{
return text.Aggregate(new StringBuilder(), (sb, c) =>
{
if (Char.IsUpper(c)) sb.Append(" ");
sb.Append(c);
return …
Run Code Online (Sandbox Code Playgroud) 我正试图进入LINQ对象,因为我可以看到它的力量.幸运的是,我有一个问题,我认为LINQ应该能够解决.
这是问题(细节是一个例子);
public class SchoolClass
{
public int ID;
public string Name;
public string Teacher;
public string RoomName;
public string Student_Name;
public int Student_Age;
}
Run Code Online (Sandbox Code Playgroud)
正如您在示例中所看到的,ClassName,Teacher和Room与学生之间存在一对多的关系,即一个班级中可能有许多学生.
如果我们有一个List,是否可以使用LINQ创建一个List但只有一个实例ID,Name,Teacher,RoomName和一个Student_Name和Age的ArrayList?
制作这个:
public class Students
{
public string Student_Name;
public int Student_Age;
}
public class SchoolClass
{
public int ID;
public string Name;
public string Teacher;
public string RoomName;
public ArrayList Students;
}
Run Code Online (Sandbox Code Playgroud)
基本上,使用LINQ将List清理为更合理的结构?
给出这个例子的一些背景知识.DataGrid使用第二个结构来生成Master-Child关系.我们在类中存储SchoolClass和StudentInformation,如上所示.LINQ很好地将我们的初始List转换为可由DataGrid使用的结构.