首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在C#中将两个对象合并为一个对象

如何在C#中将两个对象合并为一个对象
EN

Stack Overflow用户
提问于 2017-05-31 15:43:42
回答 1查看 844关注 0票数 1
代码语言:javascript
复制
var taskMessages = from d in result
                   join ptask in db.ListingTask.Entites on new
                   {
                       d.Id,
                       TaskType = ListingTaskType.Offer.ToString()
                   } equals new
                   {
                       Id = ptask.DraftId,
                       ptask.TaskType
                   } into temp
                   from t in temp.DefaultIfEmpty()
                   select new 
                   {
                       DraftId = d.Id,
                       OfferMessage = t == null || string.IsNullOrEmpty(t.Message) ? "无" : t.Message,
                       OfferSubmitResult = t == null || string.IsNullOrEmpty(t.Result) ? "无" : t.Result,
                       d.UserName,
                       d.UpdateTime,
                       d.Stock
                   };

在这个LINQ查询中,当我需要结果中的所有属性时,我需要用select new {}编写每个属性,有没有简单的方法可以做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2017-05-31 15:48:24

将这两个对象放入result对象:

代码语言:javascript
复制
var taskMessages = from d in result
                   join ptask in db.ListingTask.Entites on new
                   {
                      d.Id,
                      TaskType = ListingTaskType.Offer.ToString()
                   } equals new
                   {
                       Id = ptask.DraftId,
                       ptask.TaskType
                   } into temp
                   from t in temp.DefaultIfEmpty()
                   select new 
                   {
                       // you would obviously need better names
                       object1 = t,
                       object2 = d
                   };

然后像这样访问属性:

代码语言:javascript
复制
taskMessages[0].object2.UpdateTime; //Just as an example

Update (OP希望直接使用结果中的所有属性):

您可以通过C#交互式窗口中的反射获取所有属性的列表,并构造字符串输出以粘贴到代码中,如下所示:

代码语言:javascript
复制
#r "C:/MyApp/bin/Debug/Foo.dll"
using MyApp;
var myType = typeof(Person);
var myProperties = myType.GetProperties();
foreach(var myProperty in myProperties) { Console.WriteLine($"{myProperty.Name} = myObject.{myProperty.Name},"); }

Foo.dll是您的程序集,它也可以是可执行文件

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44278644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档