gpt4 book ai didi

c# - 使用 linq 获取属性

转载 作者:行者123 更新时间:2023-11-30 15:08:27 24 4
gpt4 key购买 nike

这可能真的很简单,但只需要一些帮助来获得正确的语法!假设我有 2 个 A、B 类。

class A 
{
string empname;
string id;
Child[] ca;
}

class Child
{
string id;
string name;
}

class B
{
string empname;
string id;
Child[] cb;
}

我想将 ca.name 映射到 cb.name。条件是 cb.id= ca.id。如何在 linq 中执行此操作?我尝试了以下方式:

ca.name=b.Child.select(x=>x.id.Equals(ca.id)) //here how to map the name property?

最佳答案

你说 map 是什么意思?您想要属性相等的名称?从您的示例的访问规范来看,您的类似乎有点偏离,并且从您的示例不确定您的数组名称是否真的是 cb 或 Child,我假设是 Child,但根据需要更正...

基本上有几种选择:

  • Single() - 返回一个且仅返回一个,如果没有或返回多个则抛出。

  • SingleOrDefault() - 如果存在则返回一个,如果不存在则返回默认值,如果存在多个则抛出

  • First() - 如果存在则返回第一个,如果不存在则抛出。

  • FirstOrDefault() - 如果存在则返回第一个,如果不存在则返回默认值。

所有这些都有谓词重载,因此您不需要 where 子句。如果您已经知道您的项目是唯一的,我建议使用 FirstOrDefault(),因为它会在找到它后停止,而 Single() 必须扫描整个列表,这可能会贵一点。

var item = b.Child.FirstOrDefault(x => x.id == ca.id);

if (item != null)
{
ca.name = item.name;
}

或者您可以使用带有空合并的 where/select 组合:

var name = b.Child.Where(x => x.id == ca.id)
.Select(x => x.name)
.FirstOrDefault() ?? "unknown";

关于c# - 使用 linq 获取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5515475/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com