C# 将十进制的linq结果转换为ObservableCollection<;字符串>;
试图将LINQ查询的结果存储到ObservaleCollection中,但LINQ的结果是十进制类型C# 将十进制的linq结果转换为ObservableCollection<;字符串>;,c#,linq,C#,Linq,试图将LINQ查询的结果存储到ObservaleCollection中,但LINQ的结果是十进制类型 ObservableCollection<string> cost = new ObservableCollection<string>((from i in context.Items where i.Cost != null
ObservableCollection<string> cost =
new ObservableCollection<string>((from i in context.Items
where i.Cost != null
&& i.Cost > 0
orderby i.Cost
select i.Cost).Distinct());
observedcollection成本=
新的ObservableCollection((来自context.Items中的i
其中i.成本!=null
&&一、成本>0
订购者i.成本
选择i.Cost).Distinct();
如果说“System.Collections.ObjectModel.ObservaleCollection.ObservaleCollection(System.Collections.Generic.IEnumerable)”的“最佳重载方法匹配”有一些无效参数,则它不会编译。
我看了看,但没多大帮助
更新
我尝试了以下方法,但没有成功:
ObservableCollection<string> cost =
new ObservableCollection<string>((from i in context.Items
where i.Cost != null
&& i.Cost > 0
orderby i.Cost
select i.Cost).Distinct()
.Select(i=>i.ToString()));
observedcollection成本=
新的ObservableCollection((来自context.Items中的i
其中i.成本!=null
&&一、成本>0
订购者i.成本
选择i.Cost).Distinct()
.Select(i=>i.ToString());
及
observedcollection成本=
新的ObservableCollection((来自context.Items中的i
其中i.成本!=null
&&一、成本>0
订购者i.成本
选择i.Cost.ToString()).Distinct();
当我在LINQPad中同时运行这两个命令时,会出现以下错误:LINQ to Entities无法识别方法'System.String ToString()'方法,并且无法将此方法转换为存储表达式。
消息LINQ to Entities无法识别“System.String ToString()”方法,并且无法将此方法转换为存储表达式。
将成本
转换为具有ToString
的字符串:
ObservableCollection<string> cost =
new ObservableCollection<string>((from i in context.Items
where i.Cost != null
&& i.Cost > 0
orderby i.Cost
select i.Cost.ToString()).Distinct());
observedcollection成本=
新的ObservableCollection((来自context.Items中的i
其中i.成本!=null
&&一、成本>0
订购者i.成本
选择i.Cost.ToString()).Distinct();
调用ToString()
时,使用您需要的任何CultureInfo
,为什么不使用ToString()
observedcollection成本=
新的ObservableCollection((来自context.Items中的i
其中i.成本!=null
&&一、成本>0
订购者i.成本
选择i.Cost.ToString()).Distinct());
您应该从上下文中选择字符串值。项
通过将它们强制转换为字符串
ObservableCollection<string> cost =
new ObservableCollection<string>((from i in context.Items
where i.Cost != null
&& i.Cost > 0
orderby i.Cost
select i.Cost.ToString()).Distinct());
observedcollection成本=
新的ObservableCollection((来自context.Items中的i
其中i.成本!=null
&&一、成本>0
订购者i.成本
选择i.Cost.ToString()).Distinct();
或创建一个可观察集合
observedcollection成本=
新的ObservableCollection((来自context.Items中的i
其中i.成本!=null
&&一、成本>0
订购者i.成本
选择i.Cost).Distinct();
在不同的之后执行ToString
。这样,它就不会创建那么多字符串,并以不同的方式比较这些字符串
ObservableCollection<string> cost =
new ObservableCollection<string>((from i in context.Items
where i.Cost != null
&& i.Cost > 0
orderby i.Cost
select i.Cost).Distinct()
.Select(i=>i.ToString()));
observedcollection成本=
新的ObservableCollection((来自context.Items中的i
其中i.成本!=null
&&一、成本>0
订购者i.成本
选择i.Cost).Distinct()
.Select(i=>i.ToString());
试试看
observedcollection成本=
新的ObservableCollection((来自context.Items中的i
其中i.成本!=null
&&一、成本>0
订购者i.成本
选择i.Cost).Distinct()
.可计算的()
.Select(c=>c.ToString());
由于EF提供程序显然无法将ToString()
调用转换为SQL,因此调用AsEnumerable()
将把查询带到内存中,而ToString()
调用将使用LINQ访问对象。我尝试了这个方法,但在运行它时它会自动崩溃。如果我在其上放置断点并尝试介入/跳过它,程序将继续运行并跳过其余代码(如加载表单中的代码,但集合中没有任何代码)。我尝试了您的第一个建议,但得到的结果与我在Weston的帖子中评论的结果相同。很遗憾,我不能使用十进制ObservableCollection。
ObservableCollection<string> cost =
new ObservableCollection<string>((from i in context.Items
where i.Cost != null
&& i.Cost > 0
orderby i.Cost
select i.Cost.ToString()).Distinct());
ObservableCollection<decimal> cost =
new ObservableCollection<decimal>((from i in context.Items
where i.Cost != null
&& i.Cost > 0
orderby i.Cost
select i.Cost).Distinct());
ObservableCollection<string> cost =
new ObservableCollection<string>((from i in context.Items
where i.Cost != null
&& i.Cost > 0
orderby i.Cost
select i.Cost).Distinct()
.Select(i=>i.ToString()));
ObservableCollection<string> cost =
new ObservableCollection<string>((from i in context.Items
where i.Cost != null
&& i.Cost > 0
orderby i.Cost
select i.Cost).Distinct()
.AsEnumerable()
.Select(c => c.ToString()));