首页 / C# / c# – Linq和返回类型
c# – Linq和返回类型
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – Linq和返回类型,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2251字,纯文字阅读大概需要4分钟。
内容图文
![c# – Linq和返回类型](/upload/InfoBanner/zyjiaocheng/798/4d207583770248769ae0ca3885958169.jpg)
我的GUI正在调用一个服务项目,它执行一些linq工作,并将数据返回到我的GUI.但是,我正在与方法的返回类型作斗争.经过一番阅读,我将此作为我的方法:
public static IEnumerable GetDetailedAccounts()
{
IEnumerable accounts =(from a in Db.accounts
join i in Db.financial_institution on
a.financial_institution.financial_institution_id
equals i.financial_institution_id
join acct in Db.z_account_type on a.z_account_type.account_type_id
equals acct.account_type_id
orderby i.name
select new
{
account_id = a.account_id,
name = i.name,
description = acct.description
});
return accounts;
}
但是,我的来电者正在争吵.我认为我搞砸了返回类型,或者没有很好地处理呼叫者,但它没有像我希望的那样工作.
这就是我试图从GUI调用该方法的方法.
IEnumerable accounts = Data.AccountService.GetDetailedAccounts();
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Accounts:");
Console.ForegroundColor = ConsoleColor.White;
foreach (var acc in accounts)
{
Console.WriteLine(string.Format("{0:00} {1}", acc.account_id, acc.name + " " + acc.description));
}
int accountid = WaitForKey();
但是,我的foreach和acc – 不起作用. acc不知道我在方法中设置的名称,描述和ID.我至少接近正确吗?
解决方法:
@BrokenGlass是正确的,问题的根源是你使用的是匿名类型.这导致您使用IEnumerable的非泛型版本,它不知道对象是什么类型.
我建议创建一个实际的Account类,而不是使用动态(这需要.NET 4.0,这可能是也可能不是你的问题).
这样你就可以返回IEnumerable< Account>而不仅仅是IEnumerable.然后,您将能够使用这些属性,因为它知道它是一个帐户.
创建Account类后,您的方法将变为:
public static IEnumerable<Account> GetDetailedAccounts()
{
IEnumerable<Account> accounts = (from a in Db.accounts
join i in Db.financial_institution on a.financial_institution.financial_institution_id
equals i.financial_institution_id
join acct in Db.z_account_type on a.z_account_type.account_type_id equals
acct.account_type_id
orderby i.name
select new Account {account_id = a.account_id, name = i.name, description = acct.description});
return accounts;
}
然后调用代码可以保持不变.
我想我应该指出var不会像你想象的那样工作.变量的类型仍然是编译时确定的,这意味着(大多数情况下)它只是一个快捷方式.如果您使用了object而不是var,那么您的示例将完全相同,因为IEnumerable只能包含object.
如果您在.NET中工作,我建议遵循.NET命名约定,尽管如此AccountId而不是account_id,但这不会影响它是否有效.
内容总结
以上是互联网集市为您收集整理的c# – Linq和返回类型全部内容,希望文章能够帮你解决c# – Linq和返回类型所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。