最初,我获得了帮助,可以从具有多个节点进行分组的较大列表中获取不同的列表。我认为那行得通。
我现在需要有关如何使用该列表的帮助。
这是我的代码:
var LOE = results.Body
.getEntitiesResponse
.getEntities
.listOfEntities
.Select(x=>new string[]{x.entityIdentification.DUNS,x.entityIdentification.DUNSPlus4})
.Distinct();
foreach (var d in LOE)
{
using (OleDbConnection conn = new OleDbConnection(cm.ConnectionString))
{
using (OleDbCommand cmd = new OleDbCommand())
{
cmd.CommandText = "sam.DeleteRecordsToBeUpdated";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@a", d.DUNS); //This is my problem area
cmd.Parameters.AddWithValue("@b", d.DUNSPlus4); //This is my problem area
cmd.Connection = conn;
conn.Open();
cmd.ExecuteNonQuery();
}
}
}
有人可以帮助我如何使用第一行中创建的新对象吗?
也许我没有正确设置第一行?我似乎无法像尝试那样使用该对象。
答案 0 :(得分:3)
您的问题出在第一句话
var LOE = results.Body.getEntitiesResponse.getEntities.listOfEntities
.Select(x=>new string[]{x.entityIdentification.DUNS,x.entityIdentification.DUNSPlus4})
.Distinct();
您应该像下面这样
var LOE = results.Body.getEntitiesResponse.getEntities.listOfEntities
.Select(x => new {
x.entityIdentification.DUNS,
x.entityIdentification.DUNSPlus4
}).Distinct();
在您的情况下,您正在选择一个数组,而不是一个匿名类
答案 1 :(得分:1)
您可以创建一个类来将值映射到:
public class DunsMapping()
{
public string Duns { get; set; }
public string DunsPlus4 { get; set; }
public DunsMapping(string duns, string duns4)
{
Duns = duns;
DunsPlus4 = duns4;
}
}
然后,linq将变为:
var LOE = results.Body
.getEntitiesResponse
.getEntities
.listOfEntities
.Select(x=>new DunsMapping(x.entityIdentification.DUNS,
x.entityIdentification.DUNSPlus4))
.Distinct();
或者,如果需要返回不同实体的列表,则可以使用GroupBy
:
var LOE = results.Body
.getEntitiesResponse
.getEntities
.listOfEntities
.GroupBy(g => new { g.DUNS, g.DUNSPlus4 })
.Select(g => g.First());
这将返回IEnumerable<YourEntity>
。