0

配列内のいくつかの ID を取得してから、それらのいくつかを選択しようとしています。私のテーブルIDフィールドの値は01、02、01-03-04なので、最初に正規表現を使用してダッシュを削除してからintに変換すると思いました。私のフィールドはnavcharです。それが正しいかどうかはわかりませんが、01 より大きく 08 より小さい値が必要です。

これは私がこれまでに行ったことです

var tids = db.mytable.AsEnumerable()
    .Select(p => Convert.ToInt32(Regex.Replace(p.myID, "[^0-9]+", string.Empty)))
    .ToArray();


var query = (from e in tids
             where e >= 1 && e <= 8
             select new MyTableViewModel ()
             {
                 ID = Convert.ToInt32(Regex.Replace(db.mytable.Find(e).myID, "[^0-9]+", string.Empty)),
                 Details= db.mytable.Find(e).myDetails
             }).ToList();

ドロップダウンメニューを作成するために、データをリストに渡します

SelectList list = new SelectList(query , "ID", "Details"); 
ViewBag.ddl = list;

私の MyTableViewModel

public class MyTableViewModel
{
    public int ID { get; set; }
    public string Details { get; set; }
}

しかし、私は得る

「主キー値の 1 つのタイプが、エンティティで定義されているタイプと一致しませんでした」

および InnerException で

「引数の型 'Edm.String' と 'Edm.Int32' は、この操作と互換性がありません。WHERE 述語の近く、1 行目、66 列目。」

これを見た主キー値の 1 つの型が、エンティティで定義された型と一致しませんでした。詳細は内部例外を参照してください

しかし運がない

ありがとうございました

4

0 に答える 0