我遇到麻烦加入两张桌子并继续收到"无法从使用中推断出来。尝试明确指定类型参数。"。
"错误2方法的类型参数 ' System.Linq.Enumerable.Join(System.Collections.Generic.IEnumerable, System.Collections.Generic.IEnumerable, System.Func,System.Func, System.Func)'无法从中推断出来 用法。尝试显式指定类型参数。 C:\ Pro Asp.net Mvc 5 \ Chapter 13 \ 1 \ SportsStore - 复制\ SportsStore.WebUI \ Controllers \ DocProductController.cs 29 17 SportsStore.WebUI"
有人能帮助我吗?
public class DocProductController : Controller
{
private IDocProductRepository repository;
private IDocMainRepository repositoryMain;
public DocProductController(IDocProductRepository docProductRepository, IDocMainRepository docMainRepository)
{
this.repository = docProductRepository;
this.repositoryMain = docMainRepository;
}
public ViewResult List()
{
DocProductListView model = new DocProductListView
{
DocProduct = repository.DocProduct
.Join(repositoryMain.DocMain,
docProduct => docProduct,
docMain => docMain.Doc_Id,
(docProduct, docMain) => new { a = docMain.Doc_Id, b = docProduct.Doc_Id })
//.OrderByDescending(n => n.DocMain)
};
return View(model);
}
}
public partial class DocMain
{
public int Doc_Id { get; set; }
public Nullable<int> Category_Id { get; set; }
public string Doc_Title { get; set; }
public Nullable<int> Doc_Order { get; set; }
public Nullable<byte> Doc_IsAudit { get; set; }
public Nullable<int> Doc_Clicks { get; set; }
public string Doc_TitleColor { get; set; }
public string Doc_Author { get; set; }
public Nullable<int> User_Id { get; set; }
public string Doc_Source { get; set; }
public string Doc_Thumb { get; set; }
public Nullable<System.DateTime> Doc_DisplayTime { get; set; }
public Nullable<System.DateTime> Doc_ReleaseTime { get; set; }
public Nullable<System.DateTime> Doc_UpdateTime { get; set; }
public string Doc_SEO_Title { get; set; }
public string Doc_SEO_Description { get; set; }
public string Doc_SEO_Keywords { get; set; }
public string Doc_RedirectUrl { get; set; }
public Nullable<byte> Doc_GenerateHTML { get; set; }
public string Doc_HTMLCatagory { get; set; }
}
public partial class DocProduct
{
public int Doc_Id { get; set; }
public Nullable<int> Category_Id { get; set; }
public string DocProduct_Content { get; set; }
}
答案 0 :(得分:0)
docProduct => docProduct,
此行应改为阅读
docProduct => docProduct.Doc_Id
因为那是您加入
的关键通常,该消息所指的是当您调用泛型方法时,它会尝试推断类型参数。 e.g。
public void MyMethod<T>(T input)
你可以这样称呼:
MyMethod<int>(0);
但实际上,<int>
是不必要的,所以你可以写:
MyMethod(0);
因为0是一个int,编译器可以知道T
必须是int。
但是如果你有:
public void MyMethod<T>(T input1, T input2)
你用
打电话给你MyMethod(0, "Hello");
现在您看到的错误消息类似于您收到的错误消息,因为它没有合理的类型T
来推断字符串,或者int,那里&# 39; d是一个错误的论点。
通常,该消息表明您的某个参数类型错误。偶尔它也会出现在类型正确的情况下,但是存在一些歧义,导致编译器无法计算出泛型类型。如果您不确定参数的类型是否错误,可以尝试明确指定它们,就像您调用MyMethod
的第一个示例一样。至少,它可能会给出关于类型不匹配发生位置的更多信息。