gpt4 book ai didi

c# - Linq to objects - 使用其他集合中的值搜索集合

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:40 26 4
gpt4 key购买 nike

我尝试在 SO 中搜索可能与我的情况类似的解决方案和问题。

我有 2 个对象集合:

public class BRSDocument
{
public string IdentifierValue { get; set;}
}

public class BRSMetadata
{
public string Value { get; set;}
}

我从我的数据层填充列表:

List<BRSDocument> colBRSDocuments = Common.Instance.GetBRSDocuments();
List<BRSMetadata> colBRSMetadata = Common.Instance.GetMessageBRSMetadata();

我现在想在 colBRSDocuments 中找到一个对象,其中 x.IdentifierValue 等于 colBRSMetadata 中的一个对象 y.Value。我只需要找到与 BRSMetadata 对象中的值匹配的 BRSDocument。

我使用普通的 foreach 循环和简单的 linq 搜索来查找数据并在找到值时中断。我想知道是否可以使用 linq 完全完成搜索?

foreach (var item in colBRSMetadata)
{
BRSDocument res = colBRSDocuments.FirstOrDefault(x => x.IdentifierValue == item.Value);

if (res != null)
{
//Do work
break;
}
}

希望你们中的一些人能把我推向正确的方向......

最佳答案

为什么不加入呢?

var docs = from d in colBRSDocuments
join m in colBRSMetadata on d.IdentiferValue equals m.Value
select d;

如果只有一个那么你可以这样做:

var doc = docs.Single(); // will throw if there is not exactly one element

如果你想返回这两个对象,那么你可以这样做:

var docsAndData = from d in colBRSDocuments
join m in colBRSMetadata on d.IdentiferValue equals m.Value
select new
{
Doc = d,
Data = m
};

然后你可以访问:

foreach (var dd in docsAndData)
{
// dd.Doc
// dd.Data
}

关于c# - Linq to objects - 使用其他集合中的值搜索集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25446771/

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