配列内のいくつかの 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 つの型が、エンティティで定義された型と一致しませんでした。詳細は内部例外を参照してください
しかし運がない
ありがとうございました