通过此代码,我获得了AspxGrid中所选行的列表。
string[] fieldName = new string[] { "UserId", "Name", "Address" };
List<object> SelectedList = Grid.GetSelectedFieldValues(fieldName);
现在我想执行以下操作之一。
List<object>
投放到List<Users>
我尝试过两种方法,但发生了异常。
无法将类型为“System.Object []”的对象强制转换为类型 'CubeDataObject.Claims'。
List<Users> mylist = (List<Users>)(Object)SelectedList;
List<Users> listd = SelectedList.Select(n => (Users)n).ToList();
我也尝试了很多其他方法,但累了。
答案 0 :(得分:4)
好像你有盒装object[]
的列表。因此,您需要将其取消装箱,并通过相应的索引获取UserId
,Name
,Address
的值。
这是一个例子:
List<Users> mylist = SelectedList
.Where(item => (int)((object[])item)[0] == 1)
.Select(item =>
{
var values = (object[])item;
return new Users()
{
UserId = (int)values[0],
Name = (string)values[1],
Address = (string)values[2]
};
})
.ToList();
答案 1 :(得分:3)
对于这个简单的尝试,Enumerable
上的Cast
-extension-method存在:
var myList = SelectedList.Cast<User>();
现在您可以轻松过滤:
var result = myList.Where(x => x.userId == 1);
答案 2 :(得分:2)
Linq有一种特殊的投射列表方法:
List<Users> mylist = SelectedList.Cast<Users>().Where(u => u.userid == 1).ToList();
这应该有效,假设对象实际上可以转换为Users对象。