0

以下は、私の ActionMethod の一部です。私が苦労している部分は、db.IntegerBuffersからのすべてのIntegerBufferValues を使用して新しい変数整数をキャストし、それらをdb.IntegerListに追加することです

        var integers = new ICollection<Integers>();

        const int COUNT = 1000000;
        Stopwatch watch = Stopwatch.StartNew();
        for (int c = 0; c < COUNT; c++)
        {
            integers = db.IntegerBuffers.OrderBy(i => i.IntegerBufferValue);
        };
        watch.Stop();

        var integerList = new IntegerList
        {
            Direction = direction,
            Performance = watch.ElapsedMilliseconds,
            Integers = integers
        };

        db.IntegerLists.Add(integerList);

整数リスト

namespace Project.Models
{
    public class IntegerList
    {
        public int IntegerListID { get; set; }
        public string Direction { get; set; }
        public long Performance { get; set; }

        public virtual ICollection<Integer> Integers { get; set; }
    }
}

IntegerBuffer

namespace Project.Models
{
    public class IntegerBuffer
    {
        public int IntegerBufferID { get; set; }
        public int IntegerBufferValue { get; set; }
    }
}

編集:整数クラスを表示するには。

整数

namespace IntegerSorterApp.Models
{
    public class Integer
    {
        public int IntegerID { get; set; }
        public int IntegerValue { get; set; }
        public int IntegerListID { get; set; }

        public virtual IntegerList IntegerList { get; set; }
    }
}
4

1 に答える 1

0

integers現在、IntegerBufferオブジェクトのコレクションです。それらを整数のみに射影するために使用.Selectします。

IEnumerable<int> integers;

// ...

integers = db.IntegerBuffers
    .OrderBy(i => i.IntegerBufferValue)
    .Select(i => i.IntegerBufferValue);

または:

integers = 
    from buffer in db.IntegerBuffers
    orderby buffer.IntegerBufferValue
    select buffer.IntegerBufferValue;

次に、コレクションに割り当てると、次のようになります。

var integerList = new IntegerList
    {
        Direction = direction,
        Performance = watch.ElapsedMilliseconds,
        Integers = integers.ToList()
    };

アップデート:

Integerおっと、それがクラスだとは思いませんでした。私の答えは、Int32オブジェクトのリストを作成することです。基本は引き続き適用されます。select を使用して、必要な構造に投影する必要があります。今、私はあなたのデータモデルを理解していませんが、おそらく次のようなものが必要です:

// Create your list first so that the list ID is saved
var integerList = new IntegerList
{
    Direction = direction,
    Performance = watch.ElapsedMilliseconds,
};
db.IntegerLists.Add(integerList);


// Now create your Integer records with the ID of the list
foreach (var buffer in db.IntegerBuffers.OrderBy(b => b.IntegerBufferValue))
{
    db.Integers.Add(new Integer
    {
        IntegerValue = buffer.IntegerBufferValue,
        IntegerListID = integerList.IntegerListID
    });
}

これが 1 対多の関係のように見える場合、レコードを設定するIntegerListIDと、リストのコレクションにInteger暗黙的に追加されます。Integers

于 2013-06-03T23:05:00.453 に答える