我正在尝试将此多列查询中的列LANS放入列表中。 并将First和Last名称分成一个单独的列表。 我无法弄清楚如何使其发挥作用。
CODE:
//Resource
var ResourceFilter = _context.INT_CertificationsXREF.Include(i => i.RIM_Resource)
.Where(i => i.RIM_Resource.LAN == i.RIM_Resource.LAN)
.Where(i => i.Approved == true)
.Where(i => i.RIM_Resource.LAN != UserInformation.Globals.LANID)
.Select( i => i.RIM_Resource.FirstName + i.RIM_Resource.LastName + i.RIM_Resource.LAN)
.Distinct()
.ToList();
var ResourceFilterNames = ResourceFilter.RIM_Resource.Firstname + RIM_Resource.LastName.ToList();
var ResourceFilterLANS = ResourceFilter.RIM_Resource.LAN.ToList();
Desired OutPut
ResourceFilterNames =名字" "姓氏,名字" "姓氏,等等....
ResourceFilterLANS = NQ90,RE97,I3R9,等等。
该列表也需要按顺序同步。
答案 0 :(得分:1)
如果我理解你的问题......我想你想要的是:
var ResourceFilter = _context.INT_CertificationsXREF.Include(i => i.RIM_Resource)
.Where(i => i.RIM_Resource.LAN == i.RIM_Resource.LAN)
.Where(i => i.Approved == true)
.Where(i => i.RIM_Resource.LAN != UserInformation.Globals.LANID)
.Select( i => new {
fullName = i.RIM_Resource.FirstName + " " + i.RIM_Resource.LastName,
Lan = i.RIM_Resource.LAN
})
.Distinct()
.ToList();
您可以检索" fullNames"的列表和" LANS"像这样
List<string> fullNames = ResourceFilter.Select(x => x.fullName).ToList();
List<string> LANS = ResourceFilter.Select(x => x.Lan).ToList();
希望有所帮助
答案 1 :(得分:0)
根据您所需的输出,我认为此解决方案适合您
var ResourceFilterNames= string.Join(",", ResourceFilter.Select(x => ( x.Firstname
+ " " + x.LastName )));
var ResourceFilterLANS = string.Join(",", ResourceFilter.Select(x=> x.Lan));
为了使此解决方案有效,您应该从Select
删除ResourceFilter
或重写如下:
.Select( i => new { i.RIM_Resource.FirstName, i.RIM_Resource.LastName, i.RIM_Resource.LAN})
答案 2 :(得分:0)
我将使用以下类作为我的测试输入:
public class MyData
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Lan { get; set; }
}
我的第一个解决方案假设您FirstName
和LastName
的组合是唯一的。
要保持两个列表同步,我将使用字典:
// var resource = new List<MyData>();
var dictionary = resource.ToDictionary(r => r.FirstName + r.LastName, r => r.Lan);
我的第二个解决方案假设它们不是唯一的,所以你可以使用它:
var dictionary = new Dictionary<string, List<string>>();
foreach(var res in resource)
{
var key = res.FirstName + res.LastName;
List<string> value;
if ( dictionary.TryGetValue(key, out value))
{
value.Add(res.Lan);
}
else
{
dictionary[key] = new List<string> {res.Lan};
}
}