0

次の形式でデータを取得しています:

 [0]: { rkey = "100asb", pkey = "100ap0", ckey = {1/6/2013 3:28:09 AM} }
 [1]: { rkey = "yxq4c", pkey = "100iis", ckey = {1/6/2013 6:38:48 PM} }
  .
  .
  .

rkeyと の値にアクセスできる別のメソッドを作成する必要がありpkeyますckey。残念ながら、線形ForEachまたはParallel.ForEach. 検索しましたが、パラメーターにアクセスするための解決策が見つかりませんでした。これを に変換することを提案した人もDictionaryいますが、それが良い方法かどうかはわかりません。それよりもはるかに単純でなければなりません。

私が書いたコードは次のようなものです:

var films = myrollup.GetCompletedMovies(dtstart, dtend).Result;

using (var session = factory.OpenSession())
{
    using (var transaction = session.BeginTransaction())
    {

        Parallel.ForEach(films, currentFilm =>
        {
            dynamic f = currentFilm;
            lock (myrollup)
            {
                var user = User.GetAsync(f.pkey).Result;
                var record = new FilmAnalytics()
                {
                    UserID = currentFilm.pkey,
                    FilmID = currentFilm.rkey,
                    UserName = user.FirstName,
                    UserLastName = user.LastName,
                    UserAlias = user.Alias,
                    UserEmail = user.Email,
                    UserFacebook = user.FbEmail,
                    Dateofcompletion = currentFilm.ckey
                };
                session.SaveOrUpdate(record);
            }
        });

        transaction.Commit();
    }
}

変数filmsIEnumerable<dynamic>型データを生成します。

4

2 に答える 2

1

私のために働く:

static void Main(string[] args) {
    IEnumerable<dynamic> films = new dynamic[] { new { rkey = 1, rval = "val1" }, new { rkey = 2, rval = "val2" } };

    foreach (var film in films.Select(f => new { RKey = (int)f.rkey,RValue = (string)f.rval }))
        Console.WriteLine(film.RKey + ":" + film.RValue);
}

このようにして、ダイナミクスを強く型付けされたオブジェクトに変換し、それらを使ってやりたいことが何でもできます

于 2013-02-15T21:28:55.933 に答える
0

次のようなクラスを作成する必要があります

 public class Thing
    {
        public string rkey { get; set; }
        public string pkey { get; set; }
        public DateTime ckey { get; set; }
    }

次に、次のようにタスクを作成します。

public Task<IEnumerable<Thing>> ....

その後、pkey、rkey、および ckey にアクセスできます。

于 2013-02-19T22:12:39.060 に答える