C# / Entity Framework 问题:
我有一个对象
这个查询有效,但返回了很多重复的用户A账户。
我尝试过:
但它会崩溃。
Account
{
public string AccountId { get; set; }
public string UserId { get; set; }
public string CurrencyId { get; set; }
}
我需要返回“用户A”的所有帐户,这些帐户与“用户B”的帐户具有相同的currencyId。这是一个简单的SQL查询,但我在EF上遇到了困难。以下是我的尝试:
public IQueryable<Account> Test(string userA, string userB)
{
var accountsA = GetAccounts().Where(x => x.UserId == userA);
var accountsB = GetAccounts().Where(x => x.UserId == userB);
return accountsA.Join(
accountsB,
acc1 => acc1.CurrencyId,
acc2 => acc2.CurrencyId,
(acc1, acc2) => acc1
);
}
这个查询有效,但返回了很多重复的用户A账户。
我尝试过:
public IQueryable<Account> Test(string userA, string userB)
{
var accountsA = GetAccounts().Where(x => x.UserId == userA);
var accountsB = GetAccounts().Where(x => x.UserId == userB);
return accountsA.GroupJoin(
accountsB,
acc1 => acc1.CurrencyId,
acc2 => acc2.CurrencyId,
(acc1, acc2) => acc1
);
}
但它会崩溃。
System.InvalidOperationException
HResult=0x80131509
Message=Processing of the LINQ expression 'DbSet<Account>
.Where(x => x.UserId == "userA").GroupJoin(
outer: DbSet<Account>
.Where(x => x.UserId == "userB"),
inner: acc1 => acc1.CurrencyId,
outerKeySelector: acc2 => acc2.CurrencyId,
innerKeySelector: (acc1, acc2) => acc1)' by 'NavigationExpandingExpressionVisitor' failed. This may indicate either a bug or a limitation in EF Core. See https://go.microsoft.com/fwlink/?linkid=2101433 for more detailed information.
我该如何在EF查询中使用DISTINCT关键字?