只有一个匹配的 MoreLinq ExceptBy 属性

MoreLinq ExceptBy with only one matching property

我有 2 个不同的项目,我正在尝试使用 more linq 库执行 except by 方法。两项之间唯一的共同点是一个名为 Symbol 的字符串。第 1 项是元组列表,第 2 项是我用 linq

打开的数据库 table

项目 1:

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

项目 2:

List<TableClass>

TableClass {
string Symbol;
decimal Price;
bool isSold; }

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

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

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

The type arguments for method 'MoreEnumerable.ExceptBy(IEnumerable, IEnumerable, Func)' cannot be inferred from the usage. Try specifying the type arguments explicitly.

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

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 的对应项目].对吗?