12
以下は、linq結合を実行しているときにコンパイルできないいくつかのC#コードの例です。誰も、なぜこれがコンパイルされないのか知っていますか?結合でコンパイルするためのC#linqクエリを取得できません
エラーが
型引数は、クエリ
から推測することができない(IQueryable<T>
を返しFetch()
私の実際のコードで)
using System.Collections.Generic;
using System.Linq;
namespace LinqJoin
{
public class DataRepository<T>
{
public IList<T> Fetch()
{
return new List<T>();
}
}
internal class SSOUser
{
public int Id { get; set; }
}
internal class UserRole
{
public int SSOUserId { get; set; }
public int RoleId { get; set; }
}
internal class Role
{
public int RoleId { get; set; }
}
class Program
{
static void Main(string[] args)
{
var users = new DataRepository<SSOUser>().Fetch();
var userroles = new DataRepository<UserRole>().Fetch();
var roles = new DataRepository<Role>().Fetch();
var result = from u in users
join ur in userroles on u.Id equals ur.SSOUserId
join r in roles on r.RoleId equals ur.RoleId
select u;
//var x1 = users.Join(userroles, u => u.Id, ur => ur.SSOUserId, (u, ur) => new { User = u, UserRole = ur}).Join(roles, x => x.UserRole.RoleId, r => r.RoleId, res => res.User);
}
}
}
素早く答えてくれてありがとう。あなたは私がどれくらいの時間を無駄にしたかを信じません。コンパイラがもう少し役に立ちましたが、「あなたが導入する範囲変数は常に等価の右辺になければなりません」というあなたのヒントは、今私がメモリにコミットするものです。 –