MoreLinq ExceptBy 只有一个匹配的属性



>我有 2 个不同的项目,我正在尝试执行 除了 通过方法 使用更多的 linq 库。这两个项目之间唯一共同的是一个名为 Symbol 的单个字符串。项目 1 是元组列表,项目 2 是我用 linq 打开的数据库表

议题 1:

Tuple<string Symbol, string Market, List<Class1>, List<Class2>>

议题2:

List<TableClass>
TableClass {
string Symbol;
decimal Price;
bool isSold; }

这是我尝试的代码。我正在尝试从 Item1 返回 Item2 中不存在的所有元素:

Item1.ExceptBy(Item2.Select(k => k.Symbol), e => e.Symbol);

这不起作用,因为 Item1 和 Item2 是完全不同的类型

方法"MoreEnumerable.ExceptBy(IEnumerable, IEnumerable, Func("的类型参数无法从用法中推断出来。尝试指定类型 明确

论点。

我保留了一个扩展方法,方便进行左外连接:

public static IEnumerable<TResult> LeftOuterJoin<TLeft, TRight, TKey, TResult>(
this IEnumerable<TLeft> leftSeq,
IEnumerable<TRight> rightSeq,
Func<TLeft, TKey> keySelectorLeft,
Func<TRight, TKey> keySelectorRight,
Func<TLeft, TRight, TResult> projectionSelector)
{
return leftSeq
.GroupJoin(
rightSeq,
keySelectorLeft,
keySelectorRight,
(leftItem, rightItems) => new { leftItem, rightItems })
.SelectMany(
x => x.rightItems.DefaultIfEmpty(),
(x, rightItem) => projectionSelector(x.leftItem, rightItem));
}

所以现在我们可以:

tuples.LeftOuterJoin(list, t => t.Symbol, k => k.Symbol, (t,k) => (t,k))
.Where(x => x.k == null)
.Select(x => x.t)

。这将为我们提供元组列表中具有Symbol属性的所有项目,该属性在另一个列表中没有具有相同Symbol的相应项目。右?

相关内容

  • 没有找到相关文章

最新更新