私はC#ASP.NETが初めてで、最初のアプリケーションに取り組んでいます。
私はarraryを返すlinqステートメントを作成しようとしています。
製品の表があります。ステータス== 1の製品ごとに、名前、ID、価格を選択できるようにしたいと思います。
これを行う方法の作成に苦労しています。個々のアイテム/列のみを返すことができました。私は長い間この方法にこだわっています。
これは私がこれまでに持っているものです:
try
{
using (UserDataDataContext db = new UserDataDataContext())
{
return db.mrobProducts.Select(x => x.Name).OrderBy(x => x).ToArray();
}
}
下のスクリーンショットを見ると、2つのエラーがあります。Select= Typeオブジェクトはその使用法から参照できませんToArray =シンボルを配列に解決できません
テーブル構造がどのようなものかはわかりませんが、以下を参照してください。
public NamePriceModel[] AllProducts()
{
try
{
using (UserDataDataContext db = new UserDataDataContext())
{
return db.mrobProducts
.Where(x => x.Status == 1)
.Select(x => new NamePriceModel {
Name = x.Name,
Id = x.Id,
Price = x.Price
})
.OrderBy(x => x.Id)
.ToArray();
}
}
catch
{
return null;
}
}
これは、必要なメンバーを持つ匿名型の配列を返します。
更新:
新しいクラスを作成します。
public class NamePriceModel
{
public string Name {get; set;}
public decimal? Price {get; set;}
public int Id {get; set;}
}
これも返すように上記のクエリを変更しました。メソッドをstring[]
からNamePriceModel[]
に戻すように変更する必要があります。
次を使用できます。
public YourClass[] AllProducts()
{
try
{
using (UserDataDataContext db = new UserDataDataContext())
{
return db.mrobProducts.Where(x => x.Status == 1)
.OrderBy(x => x.ID)
.Select(x => new YourClass { ID = x.ID, Name = x.Name, Price = x.Price})
.ToArray();
}
}
catch
{
return null;
}
}
そして、これはYourClass
実装です:
public class YourClass
{
public string Name {get; set;}
public int ID {get; set;}
public int Price {get; set;}
}
また、AllProducts
メソッドの戻り値の型はYourClass[]
でなければなりません。
lINQとLambaを使用して、2つのフィールド値を返し、単一のエンティティオブジェクトフィールドに割り当てたいと思いました。
as Name = Fname + "" + LName;
期待どおりに機能する以下のコードを参照してください。これが役立つことを願っています。
Myentity objMyEntity = new Myentity
{
id = obj.Id,
Name = contxt.Vendors.Where(v => v.PQS_ID == obj.Id).Select(v=> new { contact = v.Fname + " " + v.LName}).Single().contact
}
「連絡先」を宣言する必要はありません
Object AccountObject = _dbContext.Accounts
.Join(_dbContext.Users, acc => acc.AccountId, usr => usr.AccountId, (acc, usr) => new { acc, usr })
.Where(x => x.usr.EmailAddress == key1)
.Where(x => x.usr.Hash == key2)
.Select(x => new { AccountId = x.acc.AccountId, Name = x.acc.Name })
.SingleOrDefault();