c# - 如何在 LINQ 调用中返回文本的前 50 个字符

标签 c# winforms linq-to-sql

我有一个使用 LinqToSQL 作为 DAL 的小型 winapp。我正在为给定人员创建所有 CaseNotes 的摘要 View ,其中一个字段是“详细信息”框。我只需要将该列的前 50 个字符返回到我的 TreeView 函数。

关于我如何做到这一点的任何提示?下面是我的 TreeView 函数如何获取要显示的数据,ContactDetails 是相关列。

        public static DataTable GetTreeViewCNotes(int personID)
    {
        var context = new MATRIXDataContext();
        var caseNotesTree = from cn in context.tblCaseNotes
                        where cn.PersonID == personID
                        orderby cn.ContactDate
                        select new { cn.CaseNoteID,cn.ContactDate, cn.ParentNote, cn.IsCaseLog, cn.ContactDetails };

        var dataTable = caseNotesTree.CopyLinqToDataTable();
        context.Dispose();
        return dataTable;
    }

回答

我将此张贴在这里,以防任何 future 的搜索者想知道问题上下文中的解决方案是什么样的。

        public static DataTable GetTreeViewCNotes(int personID)
    {
        DataTable dataTable;
        using (var context = new MATRIXDataContext())
        {
            var caseNotesTree = from cn in context.tblCaseNotes
                                where cn.PersonID == personID
                                orderby cn.ContactDate
                                select new
                                           {
                                               cn.CaseNoteID,
                                               cn.ContactDate, 
                                               cn.ParentNote, 
                                               cn.IsCaseLog, 
                                               ContactDetailsPreview = cn.ContactDetails.Substring(0,50)
                                           };

            dataTable = caseNotesTree.CopyLinqToDataTable();
        }
        return dataTable;
    }

最佳答案

String.Substring :

var caseNotesTree = from cn in context.tblCaseNotes
                    where cn.PersonID == personID
                    orderby cn.ContactDate
                    select new {
                        cn.CaseNoteID,
                        cn.ContactDate,
                        cn.ParentNote,
                        cn.IsCaseLog,
                        ContactDetailsClip = cn.ContactDetails.Substring(0, Math.Min(cn.ContactDetails.Length, 50))
                    };

此外,我建议包装您对 DataContexts 的使用在 using block 。

关于c# - 如何在 LINQ 调用中返回文本的前 50 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1103726/

相关文章:

c# - System.Data.sqlClient 只会在服务器上创建默认数据库

c# - Number of query values and destination fields are not the same 错误

linq-to-sql - Windows 8的Metro风格应用程序中是否可以使用LINQ-to-SQL?

c# - 不在 linq to sql 之间

java - C# 的 getBytes ("UTF-8") 和 Encoding.UTF8.GetBytes() 之间的区别

c# - 如何从 C# 中的 SQL 查询结果填充类?

c# - 允许自定义控件正确滚动出 View

c# - 条件委托(delegate)问题

sql - LINQ:计算多列中真正 bool 值的数量

c# - 为什么 catch (Exception) 错误?