C# 嵌套Lambda表达式而不是foreach A类{ 公共B体{get;set;} } B类{ 公共列表位置{get;set;} } C类{ 公共字符串NameOfWeek{get;set;} } 上课周{ 公共int ID{get;set;} 公共字符串NameOfWeek{get;set;} } 类SomeX{ 公共列表MapWeekID(列表周列表、列表列表列表) { foreach(列表中的var a) { foreach(主体位置中的变量位置) { position.NameOfWeek=周列表 .Where(x=>x.NameOfWeek.ToString()==position.NameOfWeek) .选择(y=>y.NameOfWeek) .FirstOrDefault(); } } 回归主义者; } }
这是代码。 如何为上述foreach语句编写lambda?我正在尝试,但无法找到最好的解决方案,所以任何人都可以?Linq和扩展方法不应该真正尝试解决所有问题。然而,如果你真的需要一个语句中的所有内容,你可以使用这个C# 嵌套Lambda表达式而不是foreach A类{ 公共B体{get;set;} } B类{ 公共列表位置{get;set;} } C类{ 公共字符串NameOfWeek{get;set;} } 上课周{ 公共int ID{get;set;} 公共字符串NameOfWeek{get;set;} } 类SomeX{ 公共列表MapWeekID(列表周列表、列表列表列表) { foreach(列表中的var a) { foreach(主体位置中的变量位置) { position.NameOfWeek=周列表 .Where(x=>x.NameOfWeek.ToString()==position.NameOfWeek) .选择(y=>y.NameOfWeek) .FirstOrDefault(); } } 回归主义者; } },c#,lambda,foreach,C#,Lambda,Foreach,这是代码。 如何为上述foreach语句编写lambda?我正在尝试,但无法找到最好的解决方案,所以任何人都可以?Linq和扩展方法不应该真正尝试解决所有问题。然而,如果你真的需要一个语句中的所有内容,你可以使用这个 class A{ public B body { get; set; } } class B{ public List<C> positions { get; set; } } class C{ public string NameOfWee
class A{
public B body { get; set; }
}
class B{
public List<C> positions { get; set; }
}
class C{
public string NameOfWeek { get; set; }
}
class week{
public int ID { get; set; }
public string NameOfWeek { get; set; }
}
class SomeX{
public List<A> MapWeekID(List<week> weekList, List<A> AList)
{
foreach (var a in AList)
{
foreach (var position in a.body.positions)
{
position.NameOfWeek = weekList
.Where(x => x.NameOfWeek.ToString() == position.NameOfWeek)
.Select(y => y.NameOfWeek)
.FirstOrDefault();
}
}
return AList;
}
}
注意:如果这是我桌上的代码审查,我会把它寄回来,并附上一张便条,上面写着:“我的眼睛!!!”,请重构
基本上,您的原始foreach
易于阅读和维护。它不想太花哨,你可以很容易地看到发生了什么。这些品质比把所有东西都放在一个语句中要重要得多。Linq和扩展方法不应该真正尝试解决所有问题。然而,如果你真的需要一个语句中的所有内容,你可以使用这个
class A{
public B body { get; set; }
}
class B{
public List<C> positions { get; set; }
}
class C{
public string NameOfWeek { get; set; }
}
class week{
public int ID { get; set; }
public string NameOfWeek { get; set; }
}
class SomeX{
public List<A> MapWeekID(List<week> weekList, List<A> AList)
{
foreach (var a in AList)
{
foreach (var position in a.body.positions)
{
position.NameOfWeek = weekList
.Where(x => x.NameOfWeek.ToString() == position.NameOfWeek)
.Select(y => y.NameOfWeek)
.FirstOrDefault();
}
}
return AList;
}
}
注意:如果这是我桌上的代码审查,我会把它寄回来,并附上一张便条,上面写着:“我的眼睛!!!”,请重构
基本上,您的原始
foreach
易于阅读和维护。它不想太花哨,你可以很容易地看到发生了什么。这些特性比将所有内容都放在一条语句中要重要得多。好吧,您可以使用linq函数SelectMany。以下是修改后的版本:
AList.SelectMany(x => x.body.positions)
.ToList()
.ForEach(
position =>
position.NameOfWeek = weekList.Where(x => x.NameOfWeek == position.NameOfWeek)
.Select(y => y.NameOfWeek)
.FirstOrDefault());
嗯,您可以使用linq函数SelectMany。以下是修改后的版本:
AList.SelectMany(x => x.body.positions)
.ToList()
.ForEach(
position =>
position.NameOfWeek = weekList.Where(x => x.NameOfWeek == position.NameOfWeek)
.Select(y => y.NameOfWeek)
.FirstOrDefault());
要修改现有集合(
AList
)时,Linq不是很好。我建议当您想要修改现有集合(AList
)时,保持foreach
Linq不是很好。我建议保留foreach
谢谢你的积极评论:)谢谢你的积极评论:)