假设我有一个从不同来源填充的C#对象变量CreateDXGIFactory
。所以,在某些时候我有一个emp
,但没有名/姓。现在,从存储中获取数据的最简单方法是
emp.PersonID
等。我有大约5-10个变量,我需要这样做。显然,每个语句都会导致单个列的数据库调用,并且通常看起来很愚蠢。但我想不出一种方法可以一次性分配多个成员变量。像
这样的东西emp.PersonLastName = from p in _context.Person
where p.PersonID == emp.PersonID
select p.LastName;
emp.PersonFirstName = from p in _context.Person
where p.PersonID == emp.PersonID
select p.FirstName;
...
(显然,这只是伪代码,解释了我想要完成的事情)
答案 0 :(得分:1)
如果没有更好地了解您的类型,您可以这样做:
var result=_context.Person
.First(p=>p.PersonID==emp.PersonID);
emp.FirstName=result.FirstName;
emp.LastName=result.LastName;
只会导致一次数据库调用。如果emp是person类型,那么你可以像这样替换它:
emp=_context.Person
.First(p=>p.PersonID==emp.PersonID);
答案 1 :(得分:1)
您可以将一体化查询的结果存储在临时变量中:
var matchingPerson = (
from p in _context.Person
where p.PersonID == emp.PersonID
select p
).First();
emp.PersonLastName = p.LastName;
emp.PersonFirstName = p.FirstName;
如果你正在寻找一种方法来一次性完成所有作业,你就不能;但是,如果你不介意它是一个全新的对象,你可以能够一次性创建你的员工对象。
// Assume Employee class
var employee = (
from p in _context.Person
where p.PersonID == emp.PersonID
select new Employee {
emp.PersonID,
PersonFirstName = p.FirstName,
PersonLastName = p.LastName
}
).First();
答案 2 :(得分:-1)
请尝试以下代码。而不是使用匿名新{...}使用新的emp(){..}
import numpy as np
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
from pandas import DataFrame
m = Basemap(llcrnrlon = -170, llcrnrlat = 10, urcrnrlon = -50, urcrnrlat = 80)
m.drawcoastlines()
m.drawstates()
lon = np.array([-95, -94, -93, -92, -91])
lat = np.array([43, 42, 41])
data = np.array([[0,4,8,3],[7,3,0,0]])
# you have to write just like here to convert coordinates
x,y = m(lon,lat)
my_cmap = plt.get_cmap('rainbow')
my_cmap.set_under('white')
cs = m.pcolormesh(x,y,data,cmap = my_cmap)
m.colorbar(cs, extend = 'min')
plt.show()