C# { 转换=(来自_dataContext.FileConversions中的fc) 在fc上的_dataContext.conversionstatus中加入cs。Id等于cs.FileConversionId 在fc上的_dataContext.ReturnSettings中加入rts。ReturnSettingId等于rts.Id 在rts上的_dataContext.Returns中加入r.ReturnId等于r.Id 在r.EntityId等于e.Id的_dataContext.Entities中加入e 在e.AccountId等于a.Id的情况下加入一个_dataContext.Accounts 其中((fc.CurrentStatusCode==ConversionStatusCode.Processing)| |(fc.CurrentStatusCode==ConversionStatusCode.Ready)| |(fc.CurrentStatusCode==ConversionStatusCode.Error)|| (fc.CurrentStatusCode==ConversionStatusCode.ValidationErrors)| |(fc.CurrentStatusCode==ConversionStatusCode.Pending)) 选择fc).ToList().Where(p=>GetDataByCondition(p,sSearch)).OrderByDescending(sort).Distinct().Skip(iDisplayStart).Take(iDisplayLength).ToList(); } 返回转换; } 私有bool GetDataByCondition(文件转换、文件转换、字符串搜索) { 如果(sSearch==null) { sSearch=String.Empty; } if(fileConversion.FileName.Contains)(sSearch) ||fileConversion.ReturnSetting.Return.Entity.Account.Name.Contains(sSearch) ||fileConversion.conversionstatus.Any(s=>s.UserName.Contains(sSearch)| | | s.Date.ToShortDateString().Contains(sSearch)) ||fileConversion.CurrentStatusCode.ToString()包含(sSearch)) { 返回true; } 返回false; }
感谢所有在这篇文章中给出答案的人,我找到了我需要的解决方案。简单地说,当我在“格式需要”之前检索数据时,我会将所有数据转换成一个列表,从那一刻起,我就可以使用C#工具操作数据(在DateTime和String之间转换,等等),除了无用的数据(与我的条件不匹配的数据)C# { 转换=(来自_dataContext.FileConversions中的fc) 在fc上的_dataContext.conversionstatus中加入cs。Id等于cs.FileConversionId 在fc上的_dataContext.ReturnSettings中加入rts。ReturnSettingId等于rts.Id 在rts上的_dataContext.Returns中加入r.ReturnId等于r.Id 在r.EntityId等于e.Id的_dataContext.Entities中加入e 在e.AccountId等于a.Id的情况下加入一个_dataContext.Accounts 其中((fc.CurrentStatusCode==ConversionStatusCode.Processing)| |(fc.CurrentStatusCode==ConversionStatusCode.Ready)| |(fc.CurrentStatusCode==ConversionStatusCode.Error)|| (fc.CurrentStatusCode==ConversionStatusCode.ValidationErrors)| |(fc.CurrentStatusCode==ConversionStatusCode.Pending)) 选择fc).ToList().Where(p=>GetDataByCondition(p,sSearch)).OrderByDescending(sort).Distinct().Skip(iDisplayStart).Take(iDisplayLength).ToList(); } 返回转换; } 私有bool GetDataByCondition(文件转换、文件转换、字符串搜索) { 如果(sSearch==null) { sSearch=String.Empty; } if(fileConversion.FileName.Contains)(sSearch) ||fileConversion.ReturnSetting.Return.Entity.Account.Name.Contains(sSearch) ||fileConversion.conversionstatus.Any(s=>s.UserName.Contains(sSearch)| | | s.Date.ToShortDateString().Contains(sSearch)) ||fileConversion.CurrentStatusCode.ToString()包含(sSearch)) { 返回true; } 返回false; },c#,string,linq,datetime,C#,String,Linq,Datetime,感谢所有在这篇文章中给出答案的人,我找到了我需要的解决方案。简单地说,当我在“格式需要”之前检索数据时,我会将所有数据转换成一个列表,从那一刻起,我就可以使用C#工具操作数据(在DateTime和String之间转换,等等),除了无用的数据(与我的条件不匹配的数据) public List GetConversionsForDataTables(字符串搜索、int-iDisplayStart、int-idisplayslength、Func排序、bool-asc) { System.Linq.E
public List GetConversionsForDataTables(字符串搜索、int-iDisplayStart、int-idisplayslength、Func排序、bool-asc)
{
System.Linq.Expressions.Expression predicate=GetPredicateForFileConversion(sSearch);
//获取和排序结果
列表转换=新列表();
如果(asc)
{
var pages2skip=(iDisplayStart);
var sqlRequest=new System.Data.SqlClient.SqlCommand();
转换=(来自_dataContext.FileConversions中的fc)
在fc上的_dataContext.conversionstatus中加入cs。Id等于cs.FileConversionId
在fc上的_dataContext.ReturnSettings中加入rts。ReturnSettingId等于rts.Id
在rts上的_dataContext.Returns中加入r.ReturnId等于r.Id
在r.EntityId等于e.Id的_dataContext.Entities中加入e
在e.AccountId等于a.Id的情况下加入一个_dataContext.Accounts
其中((fc.CurrentStatusCode==ConversionStatusCode.Processing)| |(fc.CurrentStatusCode==ConversionStatusCode.Ready)| |(fc.CurrentStatusCode==ConversionStatusCode.Error)||
(fc.CurrentStatusCode==ConversionStatusCode.ValidationErrors)| |(fc.CurrentStatusCode==ConversionStatusCode.Pending))
选择fc).ToList().Where(p=>GetDataByCondition(p,sSearch)).OrderBy(sort).Distinct().Skip(pages2skip).Take(iDisplayLength).ToList();
}
其他的
{
转换=(来自_dataContext.FileConversions中的fc)
在fc上的_dataContext.conversionstatus中加入cs。Id等于cs.FileConversionId
在fc上的_dataContext.ReturnSettings中加入rts。ReturnSettingId等于rts.Id
在rts上的_dataContext.Returns中加入r.ReturnId等于r.Id
在r.EntityId等于e.Id的_dataContext.Entities中加入e
在e.AccountId等于a.Id的情况下加入一个_dataContext.Accounts
其中((fc.CurrentStatusCode==ConversionStatusCode.Processing)| |(fc.CurrentStatusCode==ConversionStatusCode.Ready)| |(fc.CurrentStatusCode==ConversionStatusCode.Error)||
(fc.CurrentStatusCode==ConversionStatusCode.ValidationErrors)| |(fc.CurrentStatusCode==ConversionStatusCode.Pending))
选择fc).ToList().Where(p=>GetDataByCondition(p,sSearch)).OrderByDescending(sort).Distinct().Skip(iDisplayStart).Take(iDisplayLength).ToList();
}
返回转换;
}
私有bool GetDataByCondition(文件转换、文件转换、字符串搜索)
{
如果(sSearch==null)
{
sSearch=String.Empty;
}
if(fileConversion.FileName.Contains)(sSearch)
||fileConversion.ReturnSetting.Return.Entity.Account.Name.Contains(sSearch)
||fileConversion.conversionstatus.Any(s=>s.UserName.Contains(sSearch)| | | s.Date.ToShortDateString().Contains(sSearch))
||fileConversion.CurrentStatusCode.ToString()包含(sSearch))
{
返回true;
}
返回false;
}
您是否尝试过string.Format(“{0:MM-dd-yyyy}等”,日期)
?是的,但可能我犯了一些错误?我尝试将此格式插入到谓词中,它抛出异常“LINQ to Entities不识别方法'System.String ToString(System.DateTime)'方法,并且此方法无法转换为存储表达式。”有什么想法吗?可能与否重复,这是“转换以显示”,我的任务是“转换为每个查询在数据库中搜索”您是否尝试过string.Format(“{0:MM-dd-yyyy}等”,日期)
?是的,但可能我犯了一些错误?我尝试将此格式插入谓词,它引发异常“LINQ-to-Entities不识别方法”Sy
System.Linq.Expressions.Expression<Func<FileConversion, bool>> predicate =
GetPredicateForFileConversion(sSearch);
//fetch and sort results
List<FileConversion> conversions = new List<FileConversion>();
if (asc)
{
var pages2skip = (iDisplayStart);
var sqlRequest = new System.Data.SqlClient.SqlCommand();
sqlRequest.CommandText = "SELECT * FROM FileConversions JOIN "
conversions = (from fc in _dataContext.FileConversions
join cs in _dataContext.ConversionStatuses on fc.Id equals cs.FileConversionId
join rts in _dataContext.ReturnSettings on fc.ReturnSettingId equals rts.Id
join r in _dataContext.Returns on rts.ReturnId equals r.Id
join e in _dataContext.Entities on r.EntityId equals e.Id
join a in _dataContext.Accounts on e.AccountId equals a.Id
where ((fc.CurrentStatusCode == ConversionStatusCode.Processing) || (fc.CurrentStatusCode == ConversionStatusCode.Ready) || (fc.CurrentStatusCode == ConversionStatusCode.Error) ||
(fc.CurrentStatusCode == ConversionStatusCode.ValidationErrors) || (fc.CurrentStatusCode == ConversionStatusCode.Pending))
select fc).Where(predicate).OrderBy(sort).Distinct().Skip(pages2skip).Take(iDisplayLength).ToList();
}
private System.Linq.Expressions.Expression<Func<FileConversion, bool>> GetPredicateForFileConversion(String sSearch)
{
System.Linq.Expressions.Expression<Func<FileConversion, bool>> predicate = null;
if (sSearch != null && !Convert.ToString(sSearch).Equals(""))
{
predicate = row => row.FileName.Contains(sSearch)
|| row.ReturnSetting.Return.Entity.Account.Name.Contains(sSearch) || Convert.ToString(row.CreationDate).Contains(sSearch)
|| row.ConversionStatuses.Any(s => s.UserName.Contains(sSearch));
}
else
{
predicate = row => true;
}
return predicate;
}
@yourDateTime.FormattedReviewDate.ToString("MMM dd,yyyy")
public string FormattedReviewDate
{
get { return ReviewDate.ToString("MMM dd,yyyy"); }
}
public List<FileConversion> GetConversionsForDataTables(String sSearch, int iDisplayStart, int iDisplayLength, Func<FileConversion, string> sort, bool asc)
{
System.Linq.Expressions.Expression<Func<FileConversion, bool>> predicate = GetPredicateForFileConversion(sSearch);
//fetch and sort results
List<FileConversion> conversions = new List<FileConversion>();
if (asc)
{
var pages2skip = (iDisplayStart);
var sqlRequest = new System.Data.SqlClient.SqlCommand();
conversions = (from fc in _dataContext.FileConversions
join cs in _dataContext.ConversionStatuses on fc.Id equals cs.FileConversionId
join rts in _dataContext.ReturnSettings on fc.ReturnSettingId equals rts.Id
join r in _dataContext.Returns on rts.ReturnId equals r.Id
join e in _dataContext.Entities on r.EntityId equals e.Id
join a in _dataContext.Accounts on e.AccountId equals a.Id
where ((fc.CurrentStatusCode == ConversionStatusCode.Processing) || (fc.CurrentStatusCode == ConversionStatusCode.Ready) || (fc.CurrentStatusCode == ConversionStatusCode.Error) ||
(fc.CurrentStatusCode == ConversionStatusCode.ValidationErrors) || (fc.CurrentStatusCode == ConversionStatusCode.Pending))
select fc).ToList().Where(p => GetDataByCondition(p, sSearch)).OrderBy(sort).Distinct().Skip(pages2skip).Take(iDisplayLength).ToList();
}
else
{
conversions = (from fc in _dataContext.FileConversions
join cs in _dataContext.ConversionStatuses on fc.Id equals cs.FileConversionId
join rts in _dataContext.ReturnSettings on fc.ReturnSettingId equals rts.Id
join r in _dataContext.Returns on rts.ReturnId equals r.Id
join e in _dataContext.Entities on r.EntityId equals e.Id
join a in _dataContext.Accounts on e.AccountId equals a.Id
where ((fc.CurrentStatusCode == ConversionStatusCode.Processing) || (fc.CurrentStatusCode == ConversionStatusCode.Ready) || (fc.CurrentStatusCode == ConversionStatusCode.Error) ||
(fc.CurrentStatusCode == ConversionStatusCode.ValidationErrors) || (fc.CurrentStatusCode == ConversionStatusCode.Pending))
select fc).ToList().Where(p => GetDataByCondition(p, sSearch)).OrderByDescending(sort).Distinct().Skip(iDisplayStart).Take(iDisplayLength).ToList();
}
return conversions;
}
private bool GetDataByCondition(FileConversion fileConversion, string sSearch)
{
if (sSearch == null)
{
sSearch = String.Empty;
}
if (fileConversion.FileName.Contains(sSearch)
|| fileConversion.ReturnSetting.Return.Entity.Account.Name.Contains(sSearch)
|| fileConversion.ConversionStatuses.Any(s => s.UserName.Contains(sSearch) || s.Date.ToShortDateString().Contains(sSearch))
|| fileConversion.CurrentStatusCode.ToString().Contains(sSearch))
{
return true;
}
return false;
}