我正在尝试根据文化覆盖另一个表的值来覆盖对象。我想保留原始的对象类型。我已经尝试了不同的方法,但总是以不支持的异常或转换错误结束。
示例代码:
我想要检索的是原始对象,其中“Name”和“Text”被Contact_tls表覆盖,如
最后一种方法,它应该是类似的(抛出错误)
protected void Page_Load(object sender,EventArgs e) { List Contacts = new List(); webDataContext db = new webDataContext();
//1
Contacts = db.Contacts.Join(
db.Contact_tls.Where(i => i.Culture == "fr"),
i => i.ID,
t => t.ID,
(i, t) => i).ToList();
//2
var linqObject = db.Contacts.Join(
db.Contact_tls.Where(i => i.Culture == "fr"),
i => i.ID,
t => t.ID,
(i, t) => new { ID = i.ID, Name = t.Name, Text = t.Text }).ToList();
//3
Contacts = db.Contacts.Join(
db.Contact_tls.Where(i => i.Culture == "fr"),
i => i.ID,
t => t.ID,
(i, t) => new Contact { ID = i.ID, Name = t.Name, Text = t.Text }).ToList();
//4
var contacts = db.Contacts.Join(
db.Contact_tls.Where(i => i.Culture == "fr"),
i => i.ID,
t => t.ID,
(i, t) => i { Name = t.Name, Text = t.Text }).ToList();
}
答案 0 :(得分:1)
尝试使用每个属性的参数向Contract
类添加构造函数,并将其与数字3一起使用:
Contacts = db.Contacts.Join(db.Contact_tls.Where(i => i.Culture == "fr"),
i => i.ID, t => t.ID,
(i, t) => new Contact(i.ID, t.Name, t.Text))
.ToList();
答案 1 :(得分:1)
我将使用Linq to Objects创建类,因此您可以按如下方式修改#2:
Contacts = db.Contacts.Join(
db.Contact_tls.Where(i => i.Culture == "fr"),
i => i.ID,
t => t.ID,
(i, t) => new { ID = i.ID, Name = t.Name, Text = t.Text })
.AsEnumerable()
.Select(x => new Contact { ID = x.ID, Name = x.Name, Text = x.Text })
.ToList();