简体   繁体   English

演员表 <object> 列表 <myclass> C#

[英]Cast List<object> to List<myclass> c#

By this code I got list of selected rows in AspxGrid. 通过此代码,我获得了AspxGrid中所选行的列表。

string[] fieldName = new string[] { "UserId", "Name", "Address" };
List<object> SelectedList = Grid.GetSelectedFieldValues(fieldName);

Now I want to perform one of the below operation. 现在我想执行以下操作之一。

  1. Filter this List of object by userid where userid = 1 using linq 使用linq通过userid过滤此对象列表,其中userid = 1
  2. Cast this List<object> into List<Users> 将此List<object>强制转换为List<Users>

I have tried following two methods but Exception occurs. 我尝试了两种方法,但发生了异常。

Unable to cast object of type 'System.Object[]' to type 'CubeDataObject.Claims'. 无法将类型为“System.Object []”的对象强制转换为“CubeDataObject.Claims”。

List<Users> mylist = (List<Users>)(Object)SelectedList;
List<Users> listd = SelectedList.Select(n => (Users)n).ToList();

I have also tried so many other methods too but tired. 我也尝试了很多其他的方法,但累了。

For this simple tast the Cast -extension-method on Enumerable exists: 对于这个简单的尝试,存在Enumerable上的Cast -extension方法

var myList = SelectedList.Cast<User>();

Now you can easily filter: 现在您可以轻松过滤:

var result = myList.Where(x => x.userId == 1);

It seems that you have list of boxed object[] . 看来你有盒装object[]列表object[] So, you need to unbox it and get the values of UserId , Name , Address by its corresponding index. 因此,您需要将其解包并通过相应的索引获取UserIdNameAddress的值。
Here is example: 这是一个例子:

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();

Linq has a special method for casting lists: Linq有一个特殊的方法来构建列表:

List<Users> mylist = SelectedList.Cast<Users>().Where(u => u.userid == 1).ToList();

This should work, assuming the objects are actually castable to a Users object. 这应该有效,假设对象实际上可以转换为Users对象。

为什么我不能从列表中投射<myclass>列出<object> ?<div id="text_translate"><p> 我有一个对象列表,它们属于我的QuoteHeader类型,我想将此列表作为对象列表传递给能够接受List&lt;object&gt;的方法。</p><p> 我的代码行显示...</p><pre> Tools.MyMethod((List&lt;object&gt;)MyListOfQuoteHeaders);</pre><p> 但是我在设计时收到以下错误...</p><pre> Cannot convert type 'System.Collections.Generic.List&lt;MyNameSpace.QuoteHeader&gt;' to 'System.Collections.Generic.List&lt;object&gt;'</pre><p> 我需要对我的 class 做任何事情来允许这样做吗? 我认为所有类都继承自 object 所以我不明白为什么这不起作用?</p></div></object></myclass> - Why can't I cast from a List<MyClass> to List<object>?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 C#-可以列出 <MyClass> 无缝转换为列表 <Interface> 或类似的? - C# - Can a List<MyClass> be seamlessly cast to a List<Interface> or similar? C#列表<myClass>包含 - C# List<myClass> Contains 转换列表 <MyClass> 列表 <MyClass.Mydata> 在C#中 - Converting List<MyClass> to List<MyClass.Mydata> in C# 为什么我不能从列表中投射<myclass>列出<object> ?<div id="text_translate"><p> 我有一个对象列表,它们属于我的QuoteHeader类型,我想将此列表作为对象列表传递给能够接受List&lt;object&gt;的方法。</p><p> 我的代码行显示...</p><pre> Tools.MyMethod((List&lt;object&gt;)MyListOfQuoteHeaders);</pre><p> 但是我在设计时收到以下错误...</p><pre> Cannot convert type 'System.Collections.Generic.List&lt;MyNameSpace.QuoteHeader&gt;' to 'System.Collections.Generic.List&lt;object&gt;'</pre><p> 我需要对我的 class 做任何事情来允许这样做吗? 我认为所有类都继承自 object 所以我不明白为什么这不起作用?</p></div></object></myclass> - Why can't I cast from a List<MyClass> to List<object>? C#清单 <MyClass> 应该从MyClass返回一个属性 - C# List<MyClass> should return a Attribute from the MyClass 比较两个List <MyClass> 在C#中 - Comparing two List<MyClass> in C# 从列表对象转换为C#中的类 - Cast from list object to class in c# C#将对象转换为基类列表 - C# Cast Object to List of Base Class 将响应对象类型转换为列表C# - cast a response object type to a list C# 泛型列表中的 C# 投射对象 - C# Cast Object in generic list
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM