Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net Linq到实体将一个实体转换为类似实体_Vb.net_Linq_Entities - Fatal编程技术网

Vb.net Linq到实体将一个实体转换为类似实体

Vb.net Linq到实体将一个实体转换为类似实体,vb.net,linq,entities,Vb.net,Linq,Entities,我有一个实体模型,实体为Person和LogPerson。它们完全相同,只是LogPerson有两个附加字段(LogPersonID,CreateDate)。如何将LogPerson转换为Person,使我的Linq代码后面的VB.NET代码不必同时处理这两种可能的类型 例如: dim p as person If useLog then p = From a In LogPerson Where ID = x Else p = From a In Person Where ID =

我有一个实体模型,实体为
Person
LogPerson
。它们完全相同,只是
LogPerson
有两个附加字段(
LogPersonID
CreateDate
)。如何
LogPerson
转换为
Person
,使我的Linq代码后面的VB.NET代码不必同时处理这两种可能的类型

例如:

dim p as person
If useLog then
   p = From a In LogPerson Where ID = x
Else
   p = From a In Person Where ID = x
End If

textbox1.text = p.firstname

没有任何方法可以跳出这个框框。没有第三方工具/库的最简单方法是使用并手动映射属性,如下所示:

IEnumerable<Person> people = ...;

IEnumerable<LogPerson> logPeople = people.Select(p => new LogPerson { 
    Name = p.Name,
    Age = p.Age,
    ...
});
IEnumerable people=。。。;
IEnumerable logPeople=people.Select(p=>newlogperson{
名称=p.名称,
年龄=p.年龄,
...
});

当然,这很繁琐,因此如果您有大量字段或许多位置需要执行此类操作,您可能需要查看自动映射库,例如。

您尝试执行的是“自动映射”。可能会有所帮助。不,只是在特定情况下使用特定的表(从日志查看,查看活动记录)
I am WRITING THE SOLUTION IN C#....

person p;
if(uselog)
{
var per = from pobj in LogPerson
          where pobj.ID= x
          select new person{
          firstname = pobj.firstname,
          lastname = pobj.lastname,
          };
}else
{
var per = from pobj in Person
    where pobj.ID= x
    select new person{
    firstname = pobj.firstname,
    lastname = pobj.lastname,
    };
}
p = per.first();
}


textbox1.text = p.firstname