Dưới đây là một ví dụ được cắt xuống của một số mã C# mà tôi không thể biên dịch khi thực hiện một số phép nối LINQ. Có ai biết tại sao điều này không biên dịch?Không thể nhận được truy vấn linq C# để biên dịch với các tham gia
Các lỗi được
Loại lập luận không thể được suy ra từ các truy vấn
(Trong mã thật của tôi Fetch()
trả về một IQueryable<T>
)
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);
}
}
}
Cảm ơn rất nhiều vì đã trả lời nhanh. bạn sẽ không tin bao nhiêu thời gian tôi đã lãng phí về điều đó. Nó sẽ được tốt đẹp nếu trình biên dịch là một chút hữu ích hơn nhưng tip của bạn về "phạm vi biến bạn giới thiệu luôn luôn phải được ở phía bên tay phải của bằng" là một trong tôi bây giờ sẽ cam kết vào bộ nhớ. –