linq convertall用于多个字段

Roc*_*Gom 1 c# linq

我必须从datatable获得两个字段.然后我应该检查一个."listIDStr"保留不是唯一的userID列表.因此,当我更新行时,我必须使用"作为主键的ID".

List<string> listIDStr = new List<string>();
...
var sqlData = SqlDataBase.SqlGetTable("SELECT ID,UserID FROM TBL_UserT WHERE SID = " + 4663 + " AND UserID = '" + UserID + "'")
                          .AsEnumerable()
                          .ToList()
                          .ConvertAll(x=>x.Field<string>("UserID"))
                          .ToList();

List<string> Cikan = sqlData.Where(x => !listIDStr.Contains(x)).ToList();
List<string> Eklenen = listIDStr.Where(x => !sqlData.Contains(x)).ToList();
Run Code Online (Sandbox Code Playgroud)

上面的代码是针对一个字段运行的.但是我希望将"ID"与"UserID"一起使用.有没有人知道它是如何做的?

Luk*_*ley 7

使用匿名类型,这里是MSDN链接.

var dtEnumerable = SqlDataBase.SqlGetTable("SELECT ID,UserID FROM TBL_UserT WHERE SID = " + 4663 + " AND UserID = '" + UserID + "'").AsEnumerable().ToList();

var newVariable = dtEnumerable.Select(x => new { UserID = x.Field<string>("UserID"), ID = x.Field<string>("ID") });
//Get new/old
var states = newVariable.Select(x => new { IsNew = !listIDStr.Contains(x.UserId), IsUpdate = listIDSTr.Contains(x.UserID), ID = x.UserID });
var updates = states.Where(x => x.IsUpdate).Select(x => x.UserID);
var newIds = states.Where(x => x.IsNew).Select(x => x.UserID);
//We now have access to both!
string firstUserID = newVariable.First().UserID;
string firstID = newVariable.First().ID;
Run Code Online (Sandbox Code Playgroud)