如何过滤从数据库中填充的SelectList?在这个例子中,我只想要在列表中显示白色兔子(颜色是兔子对象上的属性).我试图在Select的末尾添加一个位置,但我只能看到Id和Name作为我可以过滤的条件.
var bunnies = db.Bunnies.Select(x => new SelectListItem
{
Value = x.Id.ToString(),
Text = x.Name,
}
);
return new SelectList(bunnies , "Value", "Text");
Run Code Online (Sandbox Code Playgroud)
我以为我可以这样做:
var bunnies = db.Bunnies.Select(x => new SelectListItem
{
Value = x.Id.ToString(),
Text = x.Name,
}
).Where(p => p.Color == "white");
return new SelectList(bunnies , "Value", "Text");
Run Code Online (Sandbox Code Playgroud) 我有一个包含一列的表,其中包含一些用逗号分隔的数字.我需要选择包含特定值的*行.我正在使用SQL Server和C#,因此它可以在SQL或LINQ中.
我的频道列(varchar)中的数据如下所示:1,5,8,22,27,33
我的媒体表如下所示:
MediaID MediaName MediaDate ChannelIDs
------- --------- --------- ----------
1 | The Cow Jumped Over The Moon | 01/18/2015 | 1,5,8,22,27,33
2 | The Cat In The Hat | 01/18/2015 | 2,4,9,25,28,31
3 | Robin Hood The Thief | 01/18/2015 | 3,5,6,9,22,33
4 | Jingle Bells Batman Smells | 01/18/2015 | 6,7,9,24,25,32
5 | Up The River Down The River | 01/18/2015 | 5,6,10,25,26,33
Run Code Online (Sandbox Code Playgroud)
等等...
我的频道表如下所示:
ChannelID ChannelName
--------- -----------
1 Animals
2 Television
3 Movies
4 …Run Code Online (Sandbox Code Playgroud) 我想按升序对包含数字和字母的数组进行排序,将值作为字符串存储在数据库中.
这是我的清单
4B
1A
1
1B
2
4C
4
Run Code Online (Sandbox Code Playgroud)
并希望他们按照这样的顺序进行排序,其中数字按字母顺序递增,后跟字母.
1
1A
1B
2
4
4B
4C
Run Code Online (Sandbox Code Playgroud)
到目前为止我试过了
allScenes.OrderBy(x => Convert.ToInt32(x.SceneNumber)).ToList()
Run Code Online (Sandbox Code Playgroud)
和
allScenes.OrderBy(x => Convert.int.parse(x.SceneNumber)).ToList()
Run Code Online (Sandbox Code Playgroud)
但由于号码后面的字母,两者都不起作用.知道如何让这个工作吗?
我有一个Article具有以下结构的实体
public class Article
{
public decimal Price {get;set;}
public decimal? SalePrice {get;set;}
public bool OnSale {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
我需要做的是按照以下标准按价格查询文章:如果文章正在销售,请拿它的销售价格,如果没有,请按正常价格.
举个例子:
按价格订购时,订单应该是
B(价格4)
A(价格5) - 导致它的销售价格
C(价格22)
我试过了
IQueryable<Article> articlesQuery = dal.Where<Article>(m => m.Active);
articlesQuery = articlesQuery.OrderBy(m => m.OnSale ? m.PriceSale : m.PriceSale);
Run Code Online (Sandbox Code Playgroud)
但它没有给出理想的结果.
任何帮助表示赞赏.
我有以下SQL语句:
select
p.productId,
p.minAge,
p.maxAge,
min(pcb.lowerbound) MinValue,
max(pcb.upperBound) MaxValue,
p.name ProductName
from gliweb..product p
inner join gliweb..ProductClassBand pcb on pcb.productId = p.productId
where p.IncludeInQuote = 1
and @currentAge between p.minAge and p.maxAge
group by p.productId, p.minAge, p.maxAge, p.name
order by p.name
Run Code Online (Sandbox Code Playgroud)
如您所见,这是一个简单的语句,其中包含GROUP,然后是MIN / MAX。我正在尝试将此查询转换为C#LINQ,但遇到了麻烦。
到目前为止,我有以下内容:
var productListDatabase = from products in DataContext.Products
join band in DataContext.ProductClassBands on products.productId equals band.productId
where products.minAge <= currentAge &&
products.maxAge >= currentAge &&
products.IncludeInQuote == true
orderby products.name
group products by new{
products.productId,
products.minAge …Run Code Online (Sandbox Code Playgroud) 正如您所看到的,我正在尝试在语句结束时执行多个order by语句.我的结果没有回复正确.
var query =
(from x in workloadDetail
group x by new { x.titleOrder, x.httitle } into sortedData
select new WorkloadSummary()
{
httitle = sortedData.Key.httitle,
totalHrs = sortedData.Sum(x => x.totalHrs),
totalDol = sortedData.Sum(x => x.totalDol),
titleOrder = sortedData.Key.titleOrder
}).OrderBy(x => x.httitle).OrderByDescending(x => x.totalHrs);
Run Code Online (Sandbox Code Playgroud) 我的情景如下:
我有以下数据 -
1, samename, Rock, New York, 12
2, samename, Jazz, Sydney, 12
3, samename, Rock, Sydney, 12
4, samename, Jazz, New York, 12
5, name3, Opera House, Sydney, 14
6, name3, Opera House, London, 14
7, name2, Emirates, London, 13
Run Code Online (Sandbox Code Playgroud)
我想根据下面的GroupID输出它
1, samename, {Rock,Jazz}, {New York,Sydney}, 12
5, name3, Opera House, {Sydney,London}, 14
7, name2, Emirates, London, 13
Run Code Online (Sandbox Code Playgroud)
这是我继承的非常糟糕的设计 - 我试图让它变得更好......而不会破坏旧代码.
我相信答案与SelectMany有关 - 但我无法弄清楚语法 - 我尝试了几种不同的方法.
我试图解决 - 没有压扁..
var q3 = Data.Where(b=>b.GroupID != null).GroupBy(x=> new …Run Code Online (Sandbox Code Playgroud) 我GROUP BY和WHEREEntity Framework中存在严重的性能问题.
以下是Northwind数据库的示例查询:
from order in Orders
join detail in OrderDetails on order.OrderID equals detail.OrderID
group detail by order.OrderDate into dateGroup
select new
{
dateGroup.Key,
Foo = dateGroup.Where(e => e.ProductID > 20).Sum(e => (decimal?)e.UnitPrice) ?? 0,
Bar = dateGroup.Where(e => e.ProductID > 40).Sum(e => (decimal?)e.UnitPrice) ?? 0,
Baz = dateGroup.Where(e => e.ProductID > 60).Sum(e => (decimal?)e.UnitPrice) ?? 0
}
Run Code Online (Sandbox Code Playgroud)
这会生成以下sql:
-- Region Parameters
DECLARE @p0 Int = 20
DECLARE @p1 Decimal(5,4) = 0 …Run Code Online (Sandbox Code Playgroud) 这是我的代码.只有当第一个if语句(phoneNumber)不为null时,查询才能正常工作,但如果第一个if为null而其他parmenters不为null则会给我整个表
public static List<AllMember> SearchMember(string phoneNumber, string fName, string lName, string Tz, string empNum, string email, string dbName)
{
try
{
using (var db = new DCardsDataContext(Organizations.GetConnectionStringByDbName(dbName)))
{
return db.AllMembers.Where(
m =>
string.IsNullOrEmpty(phoneNumber) ? true : phoneNumber == m.PhoneNumber &&
string.IsNullOrEmpty(fName) ? true : fName == m.MemberFirstName &&
string.IsNullOrEmpty(lName) ? true : lName == m.MemberLastName &&
string.IsNullOrEmpty(Tz) ? true : Tz == m.TZ &&
string.IsNullOrEmpty(empNum) ? true : empNum == m.EmployeeNum &&
string.IsNullOrEmpty(email) ? true : email == m.Email
).ToList(); …Run Code Online (Sandbox Code Playgroud) 我有一个ASPX网页,其中包含一个组合框和一个列表框.当用户进行选择时,列表框应该填充不同的年份.
为此提供支持的数据源是.dbml,它有一个表并包含Date列.有这样的数据:
2018-01-16 00:00:00.000
2017-01-06 00:00:00.000
2017-01-06 00:00:00.000
2018-01-11 00:00:00.000
2018-01-11 00:00:00.000
2018-01-11 00:00:00.000
2017-10-03 00:00:00.000
2017-10-03 00:00:00.000
2018-01-03 00:00:00.000
Run Code Online (Sandbox Code Playgroud)
所以在列表框中我只期望:
2017
2018
Run Code Online (Sandbox Code Playgroud)
但是,相反,每年都会得到.
2018
2017
2017
2018
2018
2018
2017
2017
2018
Run Code Online (Sandbox Code Playgroud)
我的LINQ看起来像:
Using context As New ACE_Data Context()
Dim aircraft As String = comboSelectAircraft.Value
Dim year As Table(Of A_DETAIL_REPO) = context.A_DETAIL_REPOs
Dim query = From ace In context.GetTable(Of A_DETAIL_REPO)()
Where ace.Series.Equals(aircraft)
Select DateAndTime.Year(ace.Date)
Distinct
listYear.DataSource = query
listYear.DataBind()
End Using
Run Code Online (Sandbox Code Playgroud)
我不确定这是怎么回事.任何帮助表示赞赏,谢谢.
linq-to-sql ×10
linq ×9
c# ×8
sql-server ×2
.net ×1
asp.net-mvc ×1
lambda ×1
performance ×1
sql ×1
sql-order-by ×1
vb.net ×1
wpf ×1