首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要帮助制作一个优雅的LINQ查询

需要帮助制作一个优雅的LINQ查询
EN

Stack Overflow用户
提问于 2015-05-28 17:23:44
回答 3查看 62关注 0票数 0

我有一个名为waferMap的对象,它包含蓝猿列表;每个蓝猿包含一个模具打印列表,每个模具打印都有一个名称。我需要能够从蓝带列表中提取基于其名称的模具打印,如果它不存在,我需要它返回null,而不是崩溃应用程序。

概括层次:

代码语言:javascript
运行
复制
WaferMap has a List<BlueTape>
BlueTape has a List<DiePrint>
DiePrint has name (of type string)

以下是我到目前为止所拥有的:

代码语言:javascript
运行
复制
    print = waferMap.BluetapeList
                    .Select(x => x.DiePrintList)
                    .First(x => x.Contains(print, new DiePrint.Comparer()))
                    .First(x => x.Name == print.Name);

下面是来自DiePrint类的比较器对象:

代码语言:javascript
运行
复制
    public class Comparer : IEqualityComparer<DiePrint>
    {
        public bool Equals(DiePrint x, DiePrint y) { return x.Name == y.Name; }
        public int GetHashCode(DiePrint obj) { return obj.Name.GetHashCode(); }
    }

现在,由于某种原因,它总是找到匹配的,即使在任何一个蓝猿模具打印列表中没有带有适当名称的模具打印。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-28 17:29:37

代码语言:javascript
运行
复制
waferMap.BluetapeList
        .SelectMany(bt => bt.DiePrintList)
        .FirstOrDefault(dp => dp.Name == print.Name);

SelectMany平坦列表(docs)

票数 6
EN

Stack Overflow用户

发布于 2015-05-28 17:28:11

您的解决方案可能与在比较器的Equals方法中检查空值一样容易。

代码语言:javascript
运行
复制
public bool Equals(DiePrint x, DiePrint y)
{
    if (x == null && y == null)
    {
        return true;
    }
    else if (x == null || y == null) 
    {
        return false;
    }
    else
    {
        return x.Name == y.Name;
    }
}

这是“当某物为空时,程序就会崩溃”的第一个地方。如果这仍然不起作用,那么我们需要更多的细节。

票数 0
EN

Stack Overflow用户

发布于 2015-05-28 17:30:07

只需使用SelectMany来扁平每个集合,筛选所需的集合,并使用FirstOrDefault获取第一个项,但如果返回该类型的默认值(在本例中为null),则默认设置。

代码语言:javascript
运行
复制
var query = from wafer in wafers
    from tape in wafer.Tapes
    from die in tape
    where die.Name == print.Name
    select tape;

var firstTape = query.FirstOrDefault();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30513201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档