我有一个与Enumerable和整数列表相关的问题。我有以下代码抛出一个错误说明"' int'不包含' Field'的定义并且有一些无效的论点。"我确信这很容易,但是想知道是否有人可以提供帮助。谢谢!
public static IList<Site> GetSiteFromSites(DataTable data)
{
var linqRegions = Enumerable.Empty<int>();
IList<Site> sites = data.AsEnumerable().Select(r =>
{
return new Site()
{
id = r.Field<string>("id"),
name = r.Field<string>("name"),
address_line1 = r.Field<string>("address_line1"),
address_line2 = r.Field<string>("address_line2"),
post_code = r.Field<string>("post_code"),
county = r.Field<string>("county"),
city = r.Field<string>("city"),
phone_number = r.Field<string>("phone_number"),
regions = linqRegions.Where(u => u.Field<int>("regions") == r.Field<int>("regions")).ToList().Select(z => z.Field<int>("regions")).ToList()
//error is thrown for above line of code "regions"
};
}).ToList();
return sites;
}
答案 0 :(得分:0)
变量linqRegions
是一个空的可枚举的整数。
在抛出错误的行中,您正在调用Where()方法,在该方法中尝试获取每个元素的Field
属性。因为每个元素都是一个int,所以它会抛出'int' does not contain a definition for 'Field'
错误。
将您的行更改为错误:
regions = linqRegions.Where(u => u == r.Field<int>("regions")).ToList()
这将始终返回零元素(因为linqRegions
为空),所以不要忘记填充它。即使这样,该行也没有任何意义,因为它总是返回相同值的列表(值等于r.Field<int>("regions")
)。