gpt4 book ai didi

c# - 如何将这些类似的 linq 查询合并为一个?

转载 作者:太空宇宙 更新时间:2023-11-03 18:47:58 24 4
gpt4 key购买 nike

这可能是一个基本的 LINQ 问题。我需要选择一个对象,如果它为空,则选择另一个。我通过以下方式使用 linq to objects,我知道可以更快、更好、更清洁地完成...

    public Attrib DetermineAttribution(Data data)
{

var one = from c in data.actions
where c.actionType == Action.ActionTypeOne
select new Attrib
{
id = c.id,
name = c.name
};
if( one.Count() > 0)
return one.First();

var two = from c in data.actions
where c.actionType == Action.ActionTypeTwo
select new Attrib
{
id = c.id,
name = c.name
};
if (two.Count() > 0 )
return two.First();

}

这两个 linq 操作仅在 where 子句上有所不同,我知道有一种方法可以将它们结合起来。如有任何想法,我们将不胜感激。

最佳答案

我认为这个解决方案简单高效:

public Attrib DetermineAttribution(Data data)
{
var c = data.actions.FirstOrDefault(c => c.actionType == Action.ActionTypeOne) ??
data.actions.FirstOrDefault(c => c.actionType == Action.ActionTypeTwo);
return c != null ? new Attrib { id = c.id, name = c.name } : null;
}

关于c# - 如何将这些类似的 linq 查询合并为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2766585/

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