リストから指定された数のランダムなレコードを取得する関数を作成しました。現在、私は次のようなことができます:
IEnumerable<City> cities = db.Cites.GetRandom(5);
(ここで、db は SQL Server DB に接続している私の DataContext です)
現在、ランダムレコードが必要なすべてのエンティティに次のような関数があります。
public partial class City
{
public static IEnumerable<City> GetRandom(int count)
{
Random random = new Random();
IEnumerable<City> cities = DB.Context.Cities.OrderBy( c => random.Next() ).Take(count);
return cities;
}
}
それは正常に動作しますが、一般的なものにしたいので、どのテーブルでも、どのアイテムのリストでも動作します。次のような拡張メソッドを試しました:
public static IEnumerable<T> GetRandom<T>( this Table<T> table, int count)
{
Random random = new Random();
IEnumerable<T> records = table.OrderBy(r => random.Next()).Take(count);
return records;
}
しかし、私は得る:
エラー 1 型 'T' は、ジェネリック型またはメソッド 'System.Data.Linq.Table' でパラメーター 'TEntity' として使用するには、参照型である必要があります
ハイライトしますGetRandom<T>。
ここで何が問題なのかわかりません。誰かが適切な構文をクリアできますか?