[c#]如果没有匹配,得到第一单匹配元素或第一次吗?

标签: Linq SQLServer C#
发布时间: 2017/2/28 20:24:13
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

那是在LINQ中写好的一行代码,使获取集合中的第一次匹配元素或如果没有匹配比得到第一个元素可能吗?

如你有鹦鹉的集合,你想要黄色的鹦鹉,但如果是没有黄色的鹦鹉-然后任何会做这样的事情︰

Parrots.MatchedOrFirst(x => x.Yellow == true)

我试图避免双转到 SQL Server,我们在此特定情况下使用 ORM 是小巧玲珑

解决方法 1:

编辑︰ 它是 linq to SQL 解决方案

首先建立一个方便的扩展

public static T MatchedOrFirstOrDefault<T>(this IQueryable<T> collection, System.Linq.Expressions.Expression<Func<T, Boolean>> predicate)
{
  return (from item in collection.Where(predicate) select item)
                    .Concat((from item in collection select item).Take(1))
                    .ToList() // Convert to query result
                    .FirstOrDefault();
}

使用代码

var matchedOrFirst = Parrots.MatchedOrFirstOrDefault(x => x.Yellow);
官方微信
官方QQ群
31647020