传递一个列表<{Anon:string}>到 C# 中的函数

发布于 2024-11-01 03:42:51 字数 826 浏览 1 评论 0 原文

给定:

一个 linq 表达式,它返回匿名类型,其中一个字段是字符串:

var list = new List<MyClass>();
var myStringList = (from myClass in list
                  select new {myClass.StringField}).ToList();
var processedStrings = processStrings(myStringList);

以及一个我将 List 传递给的函数:

List<string> processStrings(List<string> stringsToProcess) {}

问题:< /strong>

传递 myStringList 时出现以下编译器错误:

ArgumentType type 'System.Collections.Generic.List<{StringField:string}>'不可分配给参数类型 'System.Collections.Generic.List'

所以我尝试使用 .Cast() 来修复此问题,这消除了编译器错误,但抛出一个例外是它不能将匿名字符串转换为字符串。

有什么想法不需要手动处理每个字符串吗?

Given:

A linq expression that returns anonymous type with one field which is a string:

var list = new List<MyClass>();
var myStringList = (from myClass in list
                  select new {myClass.StringField}).ToList();
var processedStrings = processStrings(myStringList);

and a function that I pass a List<string> to:

List<string> processStrings(List<string> stringsToProcess) {}

Problem:

I get the following compiler error when passing myStringList:

ArgumentType type 'System.Collections.Generic.List<{StringField:string}>' is not assignable to parameter type 'System.Collections.Generic.List<string>'

So I tried to fix this using .Cast<string>() which eliminates the compiler error but throws an exception that it can't cast an Anonymous string to a string.

Any ideas with out having to process each string by hand?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

城歌 2024-11-08 03:42:51

尝试不返回带有一个字符串的匿名对象,而是返回字符串本身:

var list = new List<MyClass>();
var myStringList = (from myClass in list
              select myClass.StringField).ToList();
var processedStrings = processStrings(myStringList);

try do not return anonymous object with one string but string itself:

var list = new List<MyClass>();
var myStringList = (from myClass in list
              select myClass.StringField).ToList();
var processedStrings = processStrings(myStringList);
生生漫 2024-11-08 03:42:51

为什么不呢

select myClass.StringField

Why not

select myClass.StringField
傾旎 2024-11-08 03:42:51

“new {myClass.StringField}”创建具有字符串属性的匿名类型...

您应该尝试:

var list = new List<MyClass>();
var myStringList = (
from myClass in list                  
select myClass.StringField).ToList();
var processedStrings = processStrings(myStringList);

The "new {myClass.StringField}" creates an anonymous type with a string property...

You should try:

var list = new List<MyClass>();
var myStringList = (
from myClass in list                  
select myClass.StringField).ToList();
var processedStrings = processStrings(myStringList);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文