1

データテーブルから 2 つのフィールドを取得する必要があります。そして、私は1つをチェックする必要があります。「listIDStr」は、一意ではないユーザー ID のリストを保持します。そのため、行を更新するときに主キーである「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();

上記のコードは1つのフィールドに対して実行されていますが、「ID」と「UserID」を一緒に取得したいです。誰かがそれがどのように行うのか良い考えを持っていますか?

4

2 に答える 2

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;
于 2013-03-15T08:51:14.943 に答える
0

基本的に、別の種類のオブジェクトに戻ってくるデータを「投影」する必要があります。メソッドの外部にデータを渡す予定がない場合は、匿名のオブジェクトでさえも可能です。

匿名オブジェクト

var user = SqlDataBase.SqlGetTable("select Id, Name from User where ...")
                      .AsEnumerable()
                      .ToList()
                      .Select(x => new { x.Id, x.Name })
                      .SingleOrDefault();

int userId = user.Id;
string username = user.Name;

強い型のオブジェクト

var user = SqlDataBase.SqlGetTable("select Id, Name from User where ...")
                      .AsEnumerable()
                      .ToList()
                      .Select(x => new UserViewModel { Id = x.Id, Name = x.Name })
                      .SingleOrDefault();

int userId = user.Id;
string username = user.Name;
于 2013-03-15T09:06:59.717 に答える