我正在加入两个数据表并使用LINQ进行选择。我在'orderby'行中收到错误。 “当前上下文中不存在'联系'这个名称”。如果我按“客户”变量的列进行排序,则可以使用,但不能使用“contact”变量中的列。
然后我删除了orderby行并试图使用lambda表达式来命令它,如:
orders.OrderBy(o => (string) o["ContactName"];
我收到错误“无法将带有[]的索引应用于”AnonymousType#1“类型的表达式。我不想仅为排序创建新类。
任何想法如何进行这种排序。我将使用两个表中的多个列进行排序。
CODE:
var orders = (from customer in Customers.AsEnumerable()
join contact in Contacts.AsEnumerable()
on (int) customer["CustomerID"] equals (int) contact["CustomerID"] into outer
from contact in outer.DefaultIfEmpty()
orderby contact["ContactName"]
select new
{
ContactID = (int) contact["ContactID"]),
Name = (string) contact["ContactName"]),
City = (string) contact["City"])
});
答案 0 :(得分:1)
存在一些语法问题(括号太多,f.e。contact["ContactID"])
),这应该有效:
var orders = from customer in Customers.AsEnumerable()
join contact in Contacts.AsEnumerable()
on customer.Field<int>("CustomerID") equals contact.Field<int>("CustomerID") into outer
from contact in outer.DefaultIfEmpty()
orderby contact["ContactName"]
select new
{
ContactID = contact.Field<int>("ContactID"),
Name = contact.Field<String>("ContactName"),
City = contact.Field<String>("City")
};
旁注:我会使用强类型Field
扩展方法。