>我有 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
的相应项目。右?