using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; namespace Trade_Test { public class TEST_LIST { public int id { get; set; } public string name { get; set; } } public class TEST_Collection<T> : System.Collections.ObjectModel.ObservableCollection<T> { private int a_MaxCount = 0; /// <summary> /// 数组的最大值,超过这个值,就会删除第一条记录 /// </summary> public int s_MaxCount { get { return a_MaxCount; } set { a_MaxCount = value; } } public TEST_Collection() { base.CollectionChanged += TEST_Collection_CollectionChanged; } private void TEST_Collection_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { if (e.NewItems != null) { if (Count > a_MaxCount) { RemoveAt(0); } } } } static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { TEST_Collection<TEST_LIST> l_list = new TEST_Collection<TEST_LIST>(); l_list.s_MaxCount = 5; l_list.Add(new TEST_LIST { id = 1, name = "11" }); l_list.Add(new TEST_LIST { id = 2, name = "22" }); l_list.Add(new TEST_LIST { id = 3, name = "33" }); l_list.Add(new TEST_LIST { id = 4, name = "44" }); l_list.Add(new TEST_LIST { id = 5, name = "55" }); l_list.Add(new TEST_LIST { id = 6, name = "66" }); l_list.Add(new TEST_LIST { id = 7, name = "77" }); TEST_Collection<TEST_LIST> l_temp = l_list.Where(p => p.id > 5); } } }
错误 CS0266 无法将类型“System.Collections.Generic.IEnumerable<Trade_Test.TEST_LIST>”隐式转换为“Trade_Test.TEST_Collection<Trade_Test.TEST_LIST>”。存在一个显式转换(能否缺少强制转换?)
本人想说的是, l_list.Where 查询出来的数据类型为什么就不是 TEST_Collection<TEST_LIST> 了,这个要怎么解决?
解决方案
10
本来就不是。
你把 Linq 的教程多看几遍。
你把 Linq 的教程多看几遍。
10
你当初怎么创建 l_list 的,你就可以还是那样创建 l_temp。关键地不在这里,关键在于你本人要知道原因。
10
为什么 要是TEST_Collection<TEST_LIST> ?
linq返回的都是IEnumerable<TSource>好不
linq返回的都是IEnumerable<TSource>好不
10
TEST_Collection<TEST_LIST> l_temp = new TEST_Collection<TEST_LIST>(l_list.Where(p => p.id > 5));
10
List<TEST_LIST> l_temp = l_list.Where(p => p.id > 5).ToList();
10
TEST_Collection<TEST_LIST> l_temp = l_list.Where(p => p.id > 5).ToList;();
http://www.wuleba.com/26727.html/comment-page-1
题主可以下载一个,代码有啥问题这个工具有提示,并且会帮你把错误改掉
http://www.wuleba.com/26727.html/comment-page-1
题主可以下载一个,代码有啥问题这个工具有提示,并且会帮你把错误改掉
10
I believe the error message can help you to fix this issue
10
List<TEST_LIST> l_temp = l_list.Where(p => p.id > 5).ToList<TEST_LIST>();
20
用var类型接收不就可以了